本帖最后由 ferrari 于 2013-05-30 09:38:20 编辑

解决方案 »

  1.   

            public string Get_Html(string url)
            {
                try
                {
                    System.Net.ServicePointManager.DefaultConnectionLimit = 512;              
                    System.GC.Collect();
                    System.Net.HttpWebRequest req = System.Net.HttpWebRequest.Create(url) as System.Net.HttpWebRequest;
                   
                    req.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)";
                    req.Accept = "text/html, application/xhtml+xml, */*";
                    req.Headers.Add("Accept-Language", "zh-CN");
                    req.Headers.Add("Accept-Encoding: gzip, deflate");
                    System.Net.HttpWebResponse response = req.GetResponse() as System.Net.HttpWebResponse;
                    System.IO.Stream stream = response.GetResponseStream();
                    StreamReader reader = new StreamReader(stream, Encoding.GetEncoding("GB2312"));
                    string readhtml =reader.ReadToEnd();
                    
                    stream.Close();
                    reader.Close();
                    if (response != null)
                    {
                        response.Close();
                    }
                    if (req != null)
                    {
                        req.Abort();
                    }
                    return readhtml;
                }
                catch (Exception ex)
                {
                    SaveLog(ex.Message.ToString());
                    SaveLog("HTML下载:URL=" + url + ";MSG=" + ex.Message.ToString());
                    return "";
                }        }
      

  2.   

    Host 设置就行req.Host = "p.3.cn";
      

  3.   


    Host的这个选项好像一设就会报错。好像是说不允许修改还是什么。
      

  4.   

    应该是报这个:无法直接修改标题“Host”。
      

  5.   

    你把返回格式给成json格式,或者把响应时间设置长一点,因为如果你请求的数据大的话在默认的响应时间内没有接受到回复的话就会出现这个错误,你可以把TimeOut的设置大点试试
      

  6.   

    把返回格式给成json格式,是什么意思?
      

  7.   

    host设了还是不行,还是会报500错误。求高手啊
      

  8.   

    应该HttpWebRequest 对象属性设置问题
    我不间断跑了10分钟,一点问题没有。
    你ContentType设置上试试
      

  9.   

    支持这个HttpWebRequest是没有Host这个属性的
    我看图片中他定要的WebRequestModel好象是自己定义好的类。求解答!
      

  10.   

    支持这个HttpWebRequest是没有Host这个属性的
    我看图片中他定要的WebRequestModel好象是自己定义好的类。求解答!
    Host属性是.NET Framework4.0以后才有的。以前的版本无法使用。你可以
    req.Headers.Add("Host","xxx") 
      

  11.   

    支持这个HttpWebRequest是没有Host这个属性的
    我看图片中他定要的WebRequestModel好象是自己定义好的类。求解答!
    Host属性是.NET Framework4.0以后才有的。以前的版本无法使用。你可以
    req.Headers.Add("Host","xxx") 谢谢,确实4.0里面才有的。
      

  12.   

    给你弄个Excel Vba的试试看:Sub test()
        On Error Resume Next
        With CreateObject("microsoft.xmlhttp")
            .Open "GET", "http://p.3.cn/prices/mgets?skuIds=J_482589,J_334634,J_429084,J_713807,J_277578,J_562252,J_713813,J_749365,J_713802,J_219847,J_482591,J_766938,J_402376,J_148867,J_347294,J_277577,J_171255,J_184185,J_277576,J_406762,J_732164,J_837944,J_561600,J_176100,J_481747,J_713853,J_256391,J_481816,J_713849,J_481815,J_482590,J_597462,J_148871,J_135457,J_835922,J_407405&type=1", False
            .Send
            str1 = "a=" & .responseText
            With CreateObject("MSScriptControl.ScriptControl")
                .Language = "JScript"
                .AddCode str1
                n = .Eval("a.length")
                For p = 0 To n - 1
                    Cells(p + 1, 1) = .Eval("a[" & p & "].p")
                    Cells(p + 1, 2) = .Eval("a[" & p & "].id")
                Next p
            End With
        End With
    End Sub