Alamofire请求删除请求json字符串中的反斜杠

时间:2018-03-28 12:41:20

标签: json swift alamofire

我正在使用可可应用程序并尝试使用Alamofire 4执行PUT请求。 这是我目前的职能。 ResponseMessage是一个Codable结构。

 func putData(responseMessage:ResponseMessage) {

    let url = "\(responseMessage.uri)?overwrite=true"

    var request = URLRequest(url: URL(string:url)!)
    request.httpMethod = HTTPMethod.put.rawValue

    do {

        let data = try JSONEncoder().encode(responseMessage)
        request.httpBody = data
        request = try JSONEncoding.default.encode(request)
        Alamofire.request(request).validate().responseJSON { response in

            switch response.result {
            case .success:
                print("success in Put ") 
            case .failure(let error):
                print("error in Put Section ==>", error)
            }
        }

    } catch(let e) {
        print("Error " , e)
    }
}

put请求工作正常,但它在json请求字符串中添加了反斜杠

{\"messageId\":\"1d657365-a460-4ee1-911d-1599bf398409\",\"status\":3,\"result\":{\"type\":0,\"content\":\"blahblahblah\",\"code\":0},\"transactionid\":0,\"uri\":\"http:\/\/someUrl\",\"id\":\"131DF57B-FB54-4DEA-957B-2DF72D37B8FA\"} 

服务器不接受带有反斜杠的内容。我试图通过parmeter而不是http身体,但我仍然有同样的问题。

有什么方法可以将这样的内容发送到服务器

{"messageId":"1d657365-a460-4ee1-911d-1599bf398409","status":3,"result":{"type":0,"content":"blahblahblah","code":0},"transactionid":0,"uri":"http:\/\/someUrl","id":"131DF57B-FB54-4DEA-957B-2DF72D37B8FA"}

非常感谢

1 个答案:

答案 0 :(得分:1)

这样做是因为你说要做到这一点,更准确地说是在这一行

request = try JSONEncoding.default.encode(request)

你已经有了一个json编码数据,当你再次这样做时,你将这个数据视为一个简单的字符串,而不是json转义特殊字符。

如果删除该行,则应该

您可能还必须设置请求的内容类型

request.setValue("application/json", forHTTPHeaderField: "Content-Type")

但并不总是需要