Wie kann ich ein abgebrochenes HttpWebRequest erneut anfordern?

7

Mein Ziel ist es, eine asynchrone HttpWebRequest erneut zu versuchen, wenn es fehlschlägt.

Wenn ich Abort () ein HttpWebRequest, kann ich BeginGetResponse nicht starten () nochmal. Die einzige Möglichkeit, wahrscheinlich erneut anzufragen, ist das HttpWebRequest-Objekt neu zu erstellen. Es scheint eine Menge Arbeit zu erfordern, da ich alle Eigenschaften vom alten Objekt kopieren müsste. Gibt es eine Abkürzung?

Hinweis: Ich denke, dass Serialisierung mein Problem lösen würde, aber diese Klasse wird nicht serialisieren, wie in einem vorherige Frage .

Aktualisieren Der Beispielquellcode wurde entfernt, weil er nicht mehr benötigt wurde

Aktuelle Ansicht zu diesem Thema Es gibt keine Verknüpfung, die einzige Möglichkeit, die Anfrage zu wiederholen, ist das Erstellen eines anderen HttpWebRequest-Objekts auf die gleiche Weise, wie Sie das Original erstellt haben.

    
Jader Dias 23.05.2017, 10:32
quelle

4 Antworten

2

Es ist möglich!

Sie müssen nur ein neues HttpWebRequest erstellen und alle Eigenschaften vom alten Objekt über Reflektion dorthin kopieren.

Hier ist eine Erweiterungsmethode , die das tut:

%Vor%

Wenn Sie dieselbe Anfrage erneut ausgeben möchten, führen Sie einfach Folgendes aus:

%Vor%     
Elad Nava 18.01.2016, 17:45
quelle
14

Es ist nicht möglich.

Eine HTTPWebRequest-Instanz repräsentiert buchstäblich eine Anforderungsinstanz (obwohl es Randfälle gibt, in denen sie intern erneut versucht wird) und ist daher nicht logisch wiederholbar. Es kann genau eine Antwort zurückgeben (Anfrage / Antwort ist ein logisches Paar), und obwohl Sie diese Antwort mehrmals überprüfen können, erhalten Sie genau das gleiche Objekt.

Grundsätzlich denken Sie, dass eine HTTPWebRequest-Instanz eine Art Fabrik ist, aber sie ist wirklich konkret. Sie müssen eine weitere Instanz erstellen.

    
annakata 28.01.2009 15:48
quelle
2

Wo versuchst du die Anfrage zu serialisieren? Es könnte eine gute Idee sein, die Anforderung vor zu serialisieren, die Sie versuchen, zu erstellen, und dann die Anforderung bei einem Fehler (von der serialisierten Instanz) erneut zu senden.

Vielleicht möchten Sie auch den Proxy entfernen, die Instanz serialisieren und dann den Proxy zurückstellen, da dies der Punkt zu sein scheint, an dem das Problem beim Serialisieren der Anfrage liegt.

    
casperOne 05.01.2009 02:27
quelle
2

Es gibt keine Verknüpfung, die einzige Möglichkeit, die Anforderung zu wiederholen, ist das Erstellen eines anderen HttpWebRequest-Objekts auf die gleiche Weise, wie Sie die ursprüngliche erstellt haben.

    
Jader Dias 12.01.2009 14:44
quelle

Tags und Links