Я пытаюсь получить данные из обработчика HTTP в мое приложение C# аналогично Chromes Postman и Advanced rest client.Вызов обработчика HTTP из исключения для исключения приложений C#
Например
Target = http://10.113.171.82/handler
Payload =
"<?xml version="1.0" encoding="utf-8"?>
<webpage pageID="406" cmdID="GET" cursor="0"/>"
Это прекрасно работает внутри Почтальон или Advanced Client Rest, но с треском проваливается из C# приложения. Последняя ошибка:
Сервер совершил нарушение протокола. Раздел = ResponseStatusLine.
Я пробовал обычные предложения (KeepAlive False, useUnsafeHeaderParsing = "true").
Вот эта сокращенная версия.
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create("http://10.113.171.82/handler");
string payload = "<?xml version=\"1.0\" encoding=\"utf-8\"?><webpage pageID=\"406\" cmdID=\"GET\" cursor=\"0\"/>";
byte[] data = Encoding.GetEncoding("iso-8859-1").GetBytes(payload);
myHttpWebRequest.ContentLength = data.Length;
myHttpWebRequest.KeepAlive = false;
CookieContainer cookieJar = new CookieContainer();
myHttpWebRequest.ProtocolVersion = HttpVersion.Version11;
myHttpWebRequest.CookieContainer = cookieJar;
myHttpWebRequest.Accept = "*/*";
myHttpWebRequest.AllowAutoRedirect = true;
myHttpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2;)";
myHttpWebRequest.Timeout = 100000;
myHttpWebRequest.Accept = "text/xml; charset=utf-8";
myHttpWebRequest.Method = "POST";
myHttpWebRequest.ServicePoint.Expect100Continue = false;
myHttpWebRequest.ServicePoint.MaxIdleTime = 100000;
myHttpWebRequest.KeepAlive = false;
myHttpWebRequest.ContentType = "text/xml; charset=utf-8";
Stream requestStream = myHttpWebRequest.GetRequestStream();
requestStream.Write(data, 0, data.Length);
requestStream.Close();
myHttpWebRequest.AllowWriteStreamBuffering = true;
//Error on the GetResponse
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
Stream responseStream = myHttpWebResponse.GetResponseStream();
StreamReader myStreamReader = new StreamReader(responseStream, Encoding.Default);
pageContent = myStreamReader.ReadToEnd();
myStreamReader.Close();
responseStream.Close();
myHttpWebResponse.Close();
Замечания. Если я удалю URLEncoding, ошибка будет следующей: «Основное соединение было закрыто: произошла непредвиденная ошибка при получении». Хотя это кажется немного хитом и промахом. Кроме того, если я удаляю/обработчик из цели, я получаю ответ HTML, но не тот, который я хочу. Большинство свойств были добавлены в попытке найти решение. Я думаю, что я пропустил что-то принципиальное!