当前位置:编程学习 > C#/ASP.NET >>

抓取x东json接口数据时老是报“远程服务器返回错误: (500) 内部服务器错误”

--------------------编程问答-------------------- 有人帮忙不?顶下! --------------------编程问答-------------------- 不会吧 你贴一下代码 --------------------编程问答--------------------         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 "";
            }

        } --------------------编程问答-------------------- --------------------编程问答-------------------- 急,再顶顶。 --------------------编程问答-------------------- Host 设置就行

req.Host = "p.3.cn";



--------------------编程问答-------------------- 人家不让你远程抓,所以你得模拟成它本地的请求。 --------------------编程问答--------------------
引用 6 楼 u010347570 的回复:
Host 设置就行

req.Host = "p.3.cn";



Host的这个选项好像一设就会报错。好像是说不允许修改还是什么。 --------------------编程问答-------------------- 应该是报这个:无法直接修改标题“Host”。 --------------------编程问答--------------------
引用 6 楼 u010347570 的回复:
Host 设置就行

req.Host = "p.3.cn";


支持这个 --------------------编程问答-------------------- 你把返回格式给成json格式,或者把响应时间设置长一点,因为如果你请求的数据大的话在默认的响应时间内没有接受到回复的话就会出现这个错误,你可以把TimeOut的设置大点试试 --------------------编程问答-------------------- 把返回格式给成json格式,是什么意思? --------------------编程问答-------------------- host设了还是不行,还是会报500错误。求高手啊 --------------------编程问答-------------------- 等高手~~~ --------------------编程问答--------------------
引用 14 楼 ferrari 的回复:
等高手~~~

应该HttpWebRequest 对象属性设置问题
我不间断跑了10分钟,一点问题没有。
你ContentType设置上试试 --------------------编程问答--------------------
引用 10 楼 lzxue1989 的回复:
Quote: 引用 6 楼 u010347570 的回复:

Host 设置就行

req.Host = "p.3.cn";


支持这个


HttpWebRequest是没有Host这个属性的
我看图片中他定要的WebRequestModel好象是自己定义好的类。求解答! --------------------编程问答--------------------
引用 16 楼 summer_chen_2008 的回复:
Quote: 引用 10 楼 lzxue1989 的回复:

Quote: 引用 6 楼 u010347570 的回复:

Host 设置就行

req.Host = "p.3.cn";

支持这个


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

Host属性是.NET Framework4.0以后才有的。以前的版本无法使用。你可以
req.Headers.Add("Host","xxx")  --------------------编程问答--------------------
引用 17 楼 u010347570 的回复:
Quote: 引用 16 楼 summer_chen_2008 的回复:

Quote: 引用 10 楼 lzxue1989 的回复:

Quote: 引用 6 楼 u010347570 的回复:

Host 设置就行

req.Host = "p.3.cn";

支持这个


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

Host属性是.NET Framework4.0以后才有的。以前的版本无法使用。你可以
req.Headers.Add("Host","xxx") 


谢谢,确实4.0里面才有的。 --------------------编程问答-------------------- 给你弄个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
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,