c# httpwebrequest getResponse() auf, friert ein und hängt sich mein Programm
War ich versucht die httpwebrequest-Klasse verwenden einer rest-service auf einem remote-server und von der ersten Ausführung selbst, mein code hing das Programm. Dann habe ich versucht, es als eine Konsole-Anwendung, um sicherzustellen, dass es hat nichts zu tun mit dem Programm selbst aber kein Glück!
string credentialsJson = @"{""username"":""test"",
""password"":""test""
}";
int tmp = ServicePointManager.DefaultConnectionLimit;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(@"https://qrua.com/qr/service" + @"/auth/login");
request.Method = "POST";
request.KeepAlive = true;
request.Timeout = 50000 ;
request.CookieContainer = new CookieContainer();
request.ContentType = "application/json";
try
{
StreamWriter writer = new StreamWriter(request.GetRequestStream());
writer.Write(credentialsJson);
}
catch (Exception e)
{
Console.WriteLine("EXCEPTION:" + e.Message);
}
//WebResponse response = request.GetResponse();
try
{
using (WebResponse response = (HttpWebResponse)request.GetResponse())
{
Console.WriteLine("request:\n" + request.ToString() + "\nresponse:\n" + response.ContentLength);
response.Close();
}
}
catch (Exception e)
{
Console.WriteLine("EXCEPTION: in sending http request:" + " \nError message:" + e.Message);
}
Habe versucht, einige Dinge aus anderen Foren aber es wird nicht helfen. Selbst eine einfache Konsolen-app mit dem obigen code hängt sich die Konsole auf unbestimmte Zeit! Jede Hilfe wäre Super..
Dank
Versuchen Sie Anfrage.ContentLength. Siehe: stackoverflow.com/questions/6736056
InformationsquelleAutor Rick | 2010-07-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du bist nie schließen die
StreamWriter
... also ich vermute, es ist nicht gespült werden. Zwar würde ich erwarten, dass eine Fehlermeldung vom server, sondern nur ein hang, aber es ist einen Blick Wert.Btw, müssen Sie nicht schließen Sie die Reaktion und entsorgen Sie es. Nur die
using
- Anweisung ist genug.Hobbit: ich schlage vor, Sie fügen Sie einen Kommentar ein, der Frage von anstatt auf meine Antwort - die OP nicht bekommen Benachrichtigung für diesen Kommentar. (Nicht dass die OP wurde auf Stack Overflow für 11 Monate sowieso...)
War mit HtmlAgilityPack und folgende permanente Umleitungen in dieser Bibliothek nicht in der Nähe der zugrunde liegenden Reaktion vor dem erstellen einer neuen.
Genau dies war für mich auf genau das problem, ich war nur mit. Danke @JonSkeet.
Hat mir sehr geholfen. Danke.
InformationsquelleAutor Jon Skeet
Es gibt nicht viel Sie tun können, wenn der remote-server nicht reagiert, andere als die Definition einer
Timeout
und fangen Sie die Ausnahme, wie Sie es Tat, um den Benutzer zu informieren, dass der Vorgang kann nicht abgeschlossen werden, da der remote-site nicht reagieren:Wenn Sie nicht möchten, dass das einfrieren der Benutzeroberfläche, die Sie verwenden könnte, die die async-version: BeginGetResponse
InformationsquelleAutor Darin Dimitrov
Versuchen Sie Anfrage.ContentLength.
Bevor Sie das tun:
Probieren Sie etwas wie dieses:
InformationsquelleAutor Stephen Oberauer