我正在使用由第三方開發的SOAP接口,但正在返回無效HTTP標頭,如下所示。讀取具有錯誤HTTP標頭的SOAP響應
HTTP/1.0 200 OK
Server: SMBDK_1/2.3.0
Date: Thu, 09 Aug 2012 18:59:14 GMT
Connection: close
Content-Length: 670
Content-Type: text/html; charset=ISO-8859-1
Content-Type: text/xml
Expires: Thu, 09 Aug 2012 18:59:14 GMT
Last-Modified: Thu, 09 Aug 2012 18:59:14 GMT
請注意,有2個內容類型標記。我爲這個VB項目使用VS2008。我有這個連接的服務參考,並且可以發送請求並接收響應。我使用MSDN示例創建了一個CustomTextMessageEncoder來讀取text/html; charset=ISO-8859-1
的響應。這對單個變量返回是有效的,但是數組永遠不會正確讀入。他們總是空着的。我正在使用Web調試代理,並可以看到SOAP響應中存在數組信息,但它實際上從未實際通過。我認爲這是由於錯誤的標題(?)。我嘗試解碼消息爲text/xml; charset=ISO-8859-1
並得到了相同的結果...空數組返回。
有沒有人有任何建議如何處理這種情況?我是否需要手動反序列化此消息還是有更好的方法?
當然,正確的做法是讓第三方修復他們的錯誤。 HTTP標準已經存在了一段時間:他們不遵循這樣一個基本標準的藉口是什麼?而且,問問自己 - 如果他們甚至無法正確執行HTTP,他們會搞砸哪些_else_? – 2012-08-14 02:31:06
他們軟件的最新版本以text/xml格式回覆; utf-8編碼和一切都很好。我認爲有人最終決定升級,更改編碼等等。不幸的是,我必須連接到這個服務,並讓它在他們的新系統上再次運行。現在我想我正面臨着靜靜地等待他們釋放這個錯誤的修復方法,或者爲了獲得我所需要的信息而繞過它。 – yelowsnw2 2012-08-14 14:55:09
text/xml聽起來像SOAP 1.1,BTW。另外,你真的必須是_quiet_嗎?他們的開發人員可能會想知道他們有一個bug。 – 2012-08-14 17:08:32