Ich frage mich, ob Sie mir mit einem Fehler helfen können, den ich habe. Ich habe einen HTTP-Manager, den ich erstellt habe, der mir hilft, POSTing/Getting Daten von Websites zu behandeln. Es hat bis vor kurzem gut funktioniert, als ich versuche, eine Mischung aus beiden zu verwenden. Die erste Schleife funktioniert, in der zweiten Schleife hängt sie an HttpWebRequest.GetRequestStream(). Ich habe überall im Netz gelesen und habe keine echte Lösung gefunden. Im Folgenden sind die Codeblöcke für den Abruf/Empfangs:Weiß jemand, warum ich ein HttpWebRequest Timeout erhalte?
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] buffer = encoding.GetBytes(_PostData);
_HttpWebRequest = (HttpWebRequest)WebRequest.Create(_FetchUrl);
_HttpWebRequest.Credentials = _Credentials;
_HttpWebRequest.Method = _RequestType.ToString();
_HttpWebRequest.ContentType = "application/x-www-form-urlencoded";
_HttpWebRequest.ContentLength = buffer.Length;
_HttpWebRequest.UserAgent = userAgent;
_HttpWebRequest.CookieContainer = _CookieContainer;
_HttpWebRequest.KeepAlive = false;
_HttpWebRequest.AllowAutoRedirect = _AllowAutoRedirect;
_HttpWebRequest.AutomaticDecompression = DecompressionMethods.GZip;
_HttpWebRequest.ServicePoint.Expect100Continue = false;
if (_RequestType.Equals(RequestTypes.POST))
{
// Write POST
Stream reqStream = _HttpWebRequest.GetRequestStream();
{
reqStream.Write(buffer, 0, buffer.Length);
reqStream.Flush();
reqStream.Close();
}
}
Und die reponse:
HttpWebResponse httpWebResponse = (HttpWebResponse)_HttpWebRequest.GetResponse();
{
Stream responseStream = httpWebResponse.GetResponseStream();
{
if (_UseGzip)
{
if (httpWebResponse.ContentEncoding.ToLower().Contains("gzip"))
{
responseStream = new GZipStream(responseStream, CompressionMode.Decompress);
}
else
{
responseStream = new DeflateStream(responseStream, CompressionMode.Decompress);
}
}
if (responseStream != null)
{
StreamReader streamReader = new StreamReader(responseStream);
{
try
{
_PageContent = streamReader.ReadToEnd();
}
finally
{
streamReader.Close();
responseStream.Close();
httpWebResponse.Close();
}
}
}
else
{
_PageContent = string.Empty;
}
}
}
_HttpWebRequest.Abort();
jemand meinen Code sehen kann alle Mängel, warum hängt? Alle Streams werden geschlossen, ich habe die erlaubten Verbindungen auf über 100 gesetzt, ich verstehe nicht, warum das bricht.
entfernen Haben Sie versucht, so etwas wie Wireshark, um zu sehen, welche Daten tatsächlich gesendet wird? – Foole
Wenn Sie sagen, dass der Code das erste Mal funktioniert, aber auf dem zweiten hält, welche HTTP-Methoden verwenden Sie während der jeweiligen Anfragen? –
Der Code hängt an einem Post, GET scheint gut zu funktionieren. Wenn ich den Code über Burp-Proxy ausführen, funktioniert es aus irgendeinem Grund gut? Vielleicht repariert der Proxy einige meiner Header, weil ich nicht verstehe, wie es einen Unterschied machen sollte. –