控制檯對接Webservice正常,一樣的方法在Web項目上報錯:json
客戶端發現響應內容類型爲「application/json;charset=UTF-8」,但應爲「text/xml」。
請求失敗,錯誤信息爲:
--
{
"code" : "03010250002",
"msg" : "Illegal json string",
"data" : ""
}
--.
說明: 執行當前 Web 請求期間,出現未經處理的異常。請檢查堆棧跟蹤信息,以瞭解有關該錯誤以及代碼中致使錯誤的出處的詳細信息。
異常詳細信息: System.InvalidOperationException: 客戶端發現響應內容類型爲「application/json;charset=UTF-8」,但應爲「text/xml」。
請求失敗,錯誤信息爲:
--
{
"code" : "03010250002",
"msg" : "Illegal json string",
"data" : ""
}
--.c#
按照網上的資料找到的方法:app
一、重寫代理類的請求或響應的方法ide
在代理類中重寫GetWebResponse方法來設置響應的ContentType:工具
protected override System.Net.WebResponse GetWebResponse(System.Net.WebRequest request) { var response = base.GetWebResponse(request); if (response.ContentType == "application/json;charset=UTF-8") response.ContentType = "text/xml"; return response; } protected override System.Net.WebResponse GetWebResponse(System.Net.WebRequest request, IAsyncResult result) { var response = base.GetWebResponse(request,result); if (response.ContentType == "application/json;charset=UTF-8") response.ContentType = "text/xml"; return response; }
調試報錯:spa
該類未實現此屬性。
說明: 執行當前 Web 請求期間,出現未經處理的異常。請檢查堆棧跟蹤信息,以瞭解有關該錯誤以及代碼中致使錯誤的出處的詳細信息。
異常詳細信息: System.NotImplementedException: 該類未實現此屬性。
源錯誤:
代理
行 39: var response = base.GetWebResponse(request);
行 40: if (response.ContentType == "application/json;charset=UTF-8")
行 41: response.ContentType = "text/xml"; 行 42: return response;
行 43: } |
重寫請求方法GetWebResponse調試
protected override System.Net.WebRequest GetWebRequest(Uri uri) { System.Net.WebRequest request = base.GetWebRequest(uri); request.ContentType = "text/xml"; return request; }
結果仍是報錯:客戶端發現響應內容類型爲「application/json;charset=UTF-8」,但應爲「text/xml」。code
後來調試發現是URL寫錯了,因是用vs的開發命令工具生成的代理類,手動設置的URL,設置錯誤致使。xml
SOAPUI生成的代理類也同樣要注意URL,URL對了就正常了。
順便附上用vs的開發命令工具生成代理類的方法,其實就是調用了wsdl.exe 生成代理類
打開vs開發控制檯
wsdl /language:c# /n:命名空間 /out:D:/SOAPUI_CS/類名.cs wsdl文件地址
SoapUI生成代理類方法