2011-09-08 78 views
1

它似乎只发生一台机器而没有其他机器发生。HttpWebRequest类型“GET”返回错误400

HttpWebRequest myRequest =(HttpWebRequest)WebRequest.Create("https://connect.zystemsgo.com/auto/"); 
     myRequest.Method = "GET"; 
     SetCertificatePolicy(); 
     Application.DoEvents(); 
     WebResponse myResponse = myRequest.GetResponse(); 
     StreamReader sr = new StreamReader(myResponse.GetResponseStream(),System.Text.Encoding.UTF8); 
     string result = sr.ReadToEnd(); 

我试图寻找其他400请求错误,但目前尚不清楚。我如何去调试呢?

+0

你是否正确地处理了所有的东西(显示的代码将不会)?你尝试了多少个同时连接? –

回答

2

HTTP Error 400表示错误的请求。这是由服务器返回的。

通常,当我调试HTTP请求时,我使用Fiddler来监视请求和响应并找出发生了什么。它永远不会失败。

0

这是一个错误的请求错误。请问有没有参数? 你可以发布响应消息,它会给出一些错误的想法。

+0

我只是试图从网站下载文件。这是一个引导程序,用于检查文件的最新版本。请求中通常有什么类型的参数? – roymustang86

+0

如果您不介意,您可以就如何形成请求字符串提供建议吗? – roymustang86

+0

当我运行你的代码减去SetCertificatePolicy()时,我得到了一些html输出。 Application.DoEvents();方法 。该html有两个链接。是否预期输出?其中一个链接指向一个目录,你想导航到该目录吗?我无法重现400错误。 –

1

(不是一个真正的答案,但太大评论)

对于它的价值,我跑了下面的Python代码(懒得旋转起来C#:),它工作得很好:

import httplib 
conn = httplib.HTTPSConnection('connect.zystemsgo.com') 
conn.request('GET', '/auto/') 
resp = conn.getresponse() 
data = resp.read() 
print data   # expected ouput, just like visiting in a browser 
print resp.status # 200 

您确定您向我们显示实际上失败的URL,或者您的代码是一个更一般的示例吗?

服务器证书可能没有安装在该机器上?我不希望在这种情况下使用HTTP 400,但它是我迄今为止唯一能想到的...

0

我在上面的注释中提供的代码有效。 WebClient webClient = new WebClient(); webClient.DownloadFile(“您的文件的完整url”,@“c:\ myfile.txt”);

您需要具有在您选择的目录中写入的权限。

如果你愿意,你也可以尝试使用异步下载。我不明白为什么它不能在某台机器上工作。

+0

标记为答案,如果它可以帮助你解决你的问题。 –