gpt4 book ai didi

ios - Swift 3.0 中的 POST 请求

转载 作者:搜寻专家 更新时间:2023-11-01 05:56:09 26 4
gpt4 key购买 nike

我正在尝试使用 Swift 中的发布请求从 Web 服务获取响应。但是我收到“无法读取数据,因为它的格式不正确”的错误。以下是代码:

let dict = ["UserName": "2222211111",
"Password": "123456",
"AppName": "xyz"]
as [String: Any]

//create the session object
let session = URLSession.shared
let url = "someurl.svc/somefunction"

//now create the URLRequest object using the url object
var request = URLRequest(url: url)
request.httpMethod = "POST" //set http method as POST

do {
request.httpBody = try JSONSerialization.data(withJSONObject: dict, options: .prettyPrinted)

} catch let error {
print(error.localizedDescription)
}

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

//create dataTask using the session object to send data to the server
let task = session.dataTask(with: request as URLRequest, completionHandler: { data, response, error in

guard error == nil else {
return
}

guard let data = data else {
return
}

do {
//create json object from data
if let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String: Any] {
print(json)
}

} catch let error {
print(error.localizedDescription)
}
})
task.resume()

我什至使用过第三方库,如 Alamofire、Networking 等。从这些库中,我得到代码 3840,字符 3 周围的响应无效。但是我使用 Objective-C 代码或使用 Postman 软件得到了正确的响应。有人可以帮我解决这个问题吗?谢谢

最佳答案

以下是使用参数调用 Alamofire POST api 的示例;内容类型和接受 header ,试试这个。

func performPOSTLogin() -> Void {
var parameters = [String:String]()
parameters["email"] = "p@p.com"
parameters["password"] = "abcd1234"

let headers: HTTPHeaders = ["Authorization": "sxfsdfsdfsfsfsf", "Accept": "application/json", "Content-Type" :"application/json"]

Alamofire.request("http://domainname/folder/folder/folder/apiname/", method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: headers).responseJSON { response in

// original URL request
print("Request is :",response.request!)

// HTTP URL response --> header and status code
print("Response received is :",response.response!)

// server data : example 267 bytes
print("Response data is :",response.data!)

// result of response serialization : SUCCESS / FAILURE
print("Response result is :",response.result)

debugPrint("Debug Print :", response)
}
}

关于ios - Swift 3.0 中的 POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43753221/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com