[英]How to send json body in get request
我知道在get請求中發送json主體違反了http規則,但是根據客戶端的要求,服務器在get request中接受json主體。所以我想使用alamofire在我的get請求中發送json主體。
我嘗試了各種參數編碼類型。
func listNews( withCompletionHandler:@escaping (_ status:Bool, _ message: String, _ yearLevels: JSON) -> Void){
let parameters = [
"month": "07",
"year": "2019",
"record_start": 0,
"record_offset": 100
] as [String : Any]
let headers = [
"Content-Type": "application/json"
]
let url = STAFF_SERVICE_URL+"staff/2/news?api_key=\(api_key)"
print("URL > \(url)")
Alamofire.request(url, method: .get,parameters:parameters, encoding: JSONEncoding.default, headers: headers).responseJSON { (response) in
let statusCode = response.response?.statusCode
print(statusCode ?? "Success Error Code")
if(statusCode==200){
let swiftyJsonVar = JSON(response.result.value!)
print(swiftyJsonVar)
withCompletionHandler(true,"Success",swiftyJsonVar)
}else if(statusCode==400){
withCompletionHandler(false,"System Error. Please try again later.",JSON.null)
}else{
withCompletionHandler(false,"System Error",JSON.null)
}
}
}
我希望得到json對象數組作為響應。 但是實際輸出是超時錯誤
實際上,您應該更改get
請求的編碼方法。 您已設置encoding: JSONEncoding.default
。 代替使用encoding: URLEncoding.default
。
第二件事,如果要在json正文中發送參數,則發送所有參數,而不是使用body發送某些參數,並使用url發送。 因此,您的api_key=\\(api_key)
應該在json主體中。
希望這能解決您的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.