幾年前,我們爲移動應用程序開發了一個.NET Web服務。 iPhone/Android/Blackberry/WindowsPhone以及由第三方開發的所有原生應用正在調用此服務。我們增加了對JSON的支持,所以有些應用程序使用JSON調用訪問此服務,有些使用SOAP。未指定內容類型時,Web服務返回SOAP
只有當請求與HTTP標頭Content-type: application/json
一起發送時,web服務纔會返回JSON。
我們遇到了一個Android平臺(特別是Galaxy Nexus)的問題,其中Content-Type
標頭缺少GET請求。我們的第三方應用程序開發人員嘗試了許多解決方案,但無法找到強制發送Content-Type GET請求的方法。
但是,我們確實注意到Accept
標頭設置正確並且已發送,但是在這些情況下,我發現無法更改Web服務以使用該標頭而不是Content-Type
來返回JSON。
下面是示例請求,其中包含XML響應,而不是根據需要使用JSON。
GET /mobile/service.asmx/Logon?system=2&username='test'&password='1234' HTTP/1.1
Accept: application/json
User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)
Connection: Keep-Alive
而且摘自Web服務代碼:
[WebMethod(
BufferResponse = false,
CacheDuration = 0
)]
[ScriptMethod(UseHttpGet = true,ResponseFormat = ResponseFormat.Json) ]
public LogonResponse Logon(int system, string username, string password)
{
return service.Logon(system, username, password);
}
有沒有辦法迫使以某種方式,或檢查Accept
頭這樣做JSON響應? (除了遷移到WCF?)
如果沒有,應用程序開發人員告訴我他們使用Spring框架發出HTTP請求。如果有關於如何使其在應用程序方面工作的解決方案,並強制發送GET請求的頭文件Content-Type
,那麼也很感激!
謝謝!
祝賀。是的,對不起,我的意思是設置_response_,而不是要求(顯然)。很高興我能幫上忙。 – K3N