2015-12-04 85 views
1

我試圖以類似的方式,以鉻合金郵差和高級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響應,但不是我想要的。 大部分屬性都是爲了尋找解決方案而添加的。 我想我錯過了一些基本的東西!

回答

1

我想我已經發現了這個問題。 服務器根本沒有返回任何頭文件。 System.Net.Connection.SyncRead(HttpWebRequest請求,布爾userRetrievedStream,布爾probeRead)

雖然這解決了這個問題(它爲什麼發生),它只是創建一個新的問題。如何在不使用HTTP/1.0的情況下接收HTTP請求200 OK

相關問題