我有一段代码,它向Google钱包发送一个HttpWebRequest请求。在我所有的机器上,这段代码都能正常工作,但是在我现在使用的这台工作电脑上却无法正常运行。这台电脑上的互联网连接没有问题(因为我正在使用它打字提出这个问题),而且我们在办公室没有代理服务器。
问题在于程序会一直挂起,甚至不会超时。它只是无动静,没有任何错误信息,最后我不得不强制关闭它。以下是代码:
具体来说,
问题在于程序会一直挂起,甚至不会超时。它只是无动静,没有任何错误信息,最后我不得不强制关闭它。以下是代码:
private static string GetLoginHtml()
{
var request = (HttpWebRequest)WebRequest.Create(LoginUrl);
var cookieJar = new CookieContainer();
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.CookieContainer = cookieJar;
using (var requestStream = request.GetRequestStream())
{
string content = "Email=" + Username + "&Passwd=" + Password;
requestStream.Write(Encoding.UTF8.GetBytes(content), 0, Encoding.UTF8.GetBytes(content).Length);
using (var sr = new StreamReader(request.GetResponse().GetResponseStream()))
{
string html = sr.ReadToEnd();
string galxValue = ParseOutValue(html, "GALX");
return GetLoginHtml2(galxValue, cookieJar);
}
}
}
当我在Visual Studio调试器上逐步执行代码时,我知道它在遇到以下这行代码时挂起:
using (var sr = new StreamReader(request.GetResponse().GetResponseStream()))
具体来说,
request.GetResponse()
部分是出现问题的。在运行 Fiddler 时,我只看到一个灰色条目,它看起来像这样: 3 200 HTTP Tunnel to accounts.google.com:443 0
没有其他东西。没有响应体。有人对可能发生的事情有任何建议吗?它只在这台计算机上发生的事实告诉我,这可能不是编程问题。
using (var sr = new StreamReader(request.GetResponse().GetResponseStream()))
。 - Icemanindusing (var rsp = request.GetResponse()) using (var strm = rsp.GetResponseStream()) using (var sr = new StreamReader(strm))
,每行单独放在一行上。很有意思知道其中哪一行出现了问题。 - John Saundersrequest.GetResponse()
这部分卡住了。 - Icemanindrequest.GetResponse()
这一行时,它就卡住了。 - Icemanind