繁体   English   中英

如何在获取请求中发送JSON正文

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM