[英]alamofire 499 when making get request with headers and parameters
我正在嘗試使用帶有Swift 3和XCode 8的Alamofire發出帶有JSON參數和自定義標頭的HTTP GET請求。我已經能夠通過一些不同的路由成功使用它,但是我似乎無法破解特別是一個代碼。 下面是我要嘗試的等效CURL和我想用來復制它的Swift代碼。
CURL請求(有效):
curl -X GET url -d '{"xxxx": "111111111" }' -v -H "email: example@example.com" -H "token: ASDFJKL" -H 'Content-Type: application/json'
Alamofire請求(無效):
let headers: HTTPHeaders = [ "email": "example@example.com", "token": "ASDFJKL"]
let parameters: Parameters = [ "xxxx": "111111111"]
Alamofire.request(url, method: .get, parameters: parameters, encoding: JSONEncoding.default,
headers: headers).responseJSON { response in
debugPrint(response)
}
如果有幫助,這是我要返回的錯誤:
[Request]: <url>/<route>
[Response]: <NSHTTPURLResponse: 0x608000226fc0> { URL: <url> } { status code: 499, headers {
"Cache-Control" = "no-cache, no-store";
Connection = "keep-alive";
"Content-Length" = 435;
"Content-Type" = "text/html; charset=utf-8";
Date = "Sun, 25 Dec 2016 23:45:38 GMT";
Server = Cowboy;
} }
[Data]: 435 bytes
[Result]: FAILURE: responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 0." UserInfo={NSDebugDescription=Invalid value around character 0.}))
[Timeline]: Timeline: { "Request Start Time": 504402284.293, "Initial Response Time": 504402339.616, "Request Completed Time": 504402339.617, "Serialization Completed Time": 504402339.617, "Latency": 55.323 secs, "Request Duration": 55.324 secs, "Serialization Duration": 0.000 secs, "Total Duration": 55.324 secs }
一個問題是您正在嘗試在請求的正文中發送JSON,但是您正在GET
請求中進行發送。 但是請求的主體在GET
請求中未定義,因為數據應該在URL中。 如果要在請求中包含正文,則實際上應該執行POST
而不是GET
。
顯然curl
是在設置GET
請求的主體,因為您提供了-X GET
設置(即使-d
選項說它使用POST
請求;並且如果您省略了-X GET
,則確實會將其設置為POST
請求由於-d
選項,因此默認情況下)。
但是URLSession
不允許您為GET
請求指定httpBody
(也不應該)。 如果要在請求正文中發送數據,則應執行POST
(即在Alamofire request
, method
應為.post
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.