簡體   English   中英

使用標頭和參數獲取請求時使用alamofire 499

[英]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 requestmethod應為.post )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM