C#webclient无法从https协议获得响应

时间:2011-05-05 13:48:20

标签: c# https webclient

当我尝试通过https从服务器加载html时,它返回错误代码500:但是当我在浏览器中打开相同的链接时它工作正常:有什么办法可以做到这一点吗?我正在使用Webclient并向服务器发送一个useragent信息:

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();

2 个答案:

答案 0 :(得分:0)

这可能应该是一个评论,但评论中没有足够的空间用于所有问题......我认为这个问题没有足够的信息可以回答任何信心。

500 error表示服务器出现问题。简短的回答是浏览器正在发送一些WebClient不是的内容。

WebClient可能没有发送服务器期望的标头。服务器是否需要身份验证?这是您与公司签订合同的页面,可能为您提供了凭据或API密钥,您是否需要添加HTTP Authorization

如果您正在与一家与之合作的公司进行此操作,那么您应该可以让他们帮助查找您遇到500错误的原因。否则,您可能需要向我们提供代码示例和更多详细信息,以便我们提供更多建议。

答案 1 :(得分:0)

David是正确的,这通常发生在服务器期望某些未通过的标头时,在您的情况下接受

此代码现在可以使用

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);
           }
  }
 }