Frage

Ich habe versucht, httpwebrequest zu verwenden, um einen Rest-ähnlichen Dienst auf einem Remote-Server zu verwenden, und von der ersten Ausführung an hat mein Code das Programm blockiert.Dann habe ich es als Konsolenanwendung ausprobiert, um sicherzustellen, dass es nichts mit dem Programm selbst zu tun hat, 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 mehrere Dinge aus verschiedenen Foren ausprobiert, aber es hat nicht geholfen.Selbst eine einfache Konsolen-App mit dem oben genannten Code lässt die Konsole auf unbestimmte Zeit hängen!Jede Hilfe wäre großartig.

Danke

War es hilfreich?

Lösung

Du wirst das niemals schließen StreamWriter...Daher vermute ich, dass es nicht gespült wird.Zugegebenermaßen würde ich vom Server einen Fehler erwarten und nicht nur einen Hänger, aber es lohnt sich, einen Blick darauf zu werfen.

Übrigens müssen Sie die Antwort nicht schließen Und entsorgen Sie es.Nur das using Aussage ist genug.

Andere Tipps

Es gibt nicht viel, wenn der Remote-Server nicht anders antwortet, wenn ein generationspflichtiges Definieren eines generationstechnischenetcodescode nicht reagiert und die Ausnahme, wie Sie es tun, um den Benutzer zu informieren, dass der Betrieb nicht abgeschlossen ist, da der Remote-Site nicht reagiert:

generasacodicetagpre.

Wenn Sie die Benutzeroberfläche nicht einfrieren möchten, können Sie die async-Version verwenden: bettingetresponse

Versuchen Sie, Anforderung anzuteilen.Kontentlänge.

Bevor Sie dies tun:

generasacodicetagpre.

versuchen Sie so etwas:

generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top