json - 如何在get请求中发送json body

标签 json swift alamofire

我知道在 get 请求中发送 json 正文违反了 http 规则,但是根据客户端的要求,服务器在 get 请求中接受 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 请求的编码方法。您已设置编码:JSONEncoding.default。相反,请使用编码:URLEncoding.default

第二件事,如果您在 json 正文中发送参数,则发送所有参数,而不是部分通过正文发送,部分在 url 中发送。因此,您的 api_key=\(api_key) 应位于 json 正文中。

我希望这能解决您的问题。

关于json - 如何在get请求中发送json body,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56963414/

相关文章:

json - Play JSON : Reading and validating a JsObject with unknown keys

python - 报废数据并推送到 Elasticsearch 时出现SerializationError

objective-c - 在 iOS 中使用 JSON 创建动态表单

swift - 如何在单击按钮时将纵向模式更改为横向模式?

swift - Rx swift : How to correctly subscribe to a variable change

swift - Alamofire 'Invalid type in JSON write (_SwiftValue)' 结构

javascript - 在 Node.JS 中从服务器端向客户端发送 GET 请求 JSON 对象

swift - NSView/NSResponder 智能放大 :

swift - 无法使用 params 作为字典与 Swift 4 和 Alamofire 发出发布请求

swift - 如何使用 Alamofire 请求在 tableView 中显示我的数据