我正在使用可可应用程序并尝试使用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"}
非常感谢
答案 0 :(得分:1)
这样做是因为你说要做到这一点,更准确地说是在这一行
request = try JSONEncoding.default.encode(request)
你已经有了一个json编码数据,当你再次这样做时,你将这个数据视为一个简单的字符串,而不是json转义特殊字符。
如果删除该行,则应该
您可能还必须设置请求的内容类型
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
但并不总是需要