我試圖以類似的方式,以鉻合金郵差和高級REST客戶端檢索來自HTTP處理數據,以我的C#應用程序。調用從C#應用程序HTTP處理程序拋出異常
如
Target = http://10.113.171.82/handler
Payload =
"<?xml version="1.0" encoding="utf-8"?>
<webpage pageID="406" cmdID="GET" cursor="0"/>"
這工作得很好,從內郵差或高級REST客戶端,但是從C#應用程序悲慘的失敗了。最新的錯誤是
服務器違反了協議。第= ResponseStatusLine。
我已經試過通常建議(保持活動假,useUnsafeHeaderParsing = 「真」)。
這裏的縮寫版本。
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響應,但不是我想要的。 大部分屬性都是爲了尋找解決方案而添加的。 我想我錯過了一些基本的東西!