C#webclient无法获得来自https协议的响应

问题描述:

当我试图通过https从服务器加载html时,它返回错误代码500:但是当我在浏览器中打开相同的链接时,它工作正常:有没有办法做到这一点?我使用的Web客户端,并发送用户代理信息到服务器:C#webclient无法获得来自https协议的响应

HttpWebRequest req1 = (HttpWebRequest)WebRequest.Create("mobile.unibet.com/";); 
req1.UserAgent = @"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5"; 
var response1 = req1.GetResponse(); 
var responsestream1 = response1.GetResponseStream(); 
+3

您可能需要发布一些代码。 ..! – Nick 2011-05-05 13:51:37

+0

HttpWebRequest req1 =(HttpWebRequest)WebRequest.Create(“https://mobile.unibet.com/”); “Mozilla/5.0(Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5)Gecko/20091102 Firefox/3.5.5”; var response1 = req1.GetResponse(); var responsestream1 = response1.GetResponseStream(); – 2011-05-05 13:57:24

大卫是正确的,这个时候服务器要求未穿过一些头通常发生在你的情况下,接受

此代码的工作,现在

string requestUrl = "https://mobile.unibet.com/unibet_index.t"; 
var request = (HttpWebRequest)WebRequest.Create(requestUrl); 
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; 
request.UserAgent = "//Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"; 

using (var response = request.GetResponse() as HttpWebResponse) 
{ 
using (var sr = new StreamReader(response.GetResponseStream())) 
{ 
      var responsestring = sr.ReadToEnd(); 
     if (!string.IsNullOrEmpty(responsestring)) 
     { 
    Console.WriteLine(responsestring); 
      } 
    } 
} 

这也许应该是一个评论,但有没有足够的空间在注释对于所有的问题...我不认为这个问题有足够的信息来回答任何级别的信心。

A 500 error意味着服务器存在问题。简短的回答是浏览器正在发送一些WebClient不是的内容。

WebClient可能不会发送服务器预期的标头。服务器是否需要认证?这是您签约的公司的页面,可能是您提供了证书或API密钥,您需要添加HTTP Authorization吗?

如果您正在与一家与您建立合作伙伴关系的公司开展业务,那么您应该可以要求他们帮助您追踪出现500错误的原因。否则,您可能需要向我们提供代码示例和更多详细信息,以便我们提供更多建议。