【发布时间】:2026-02-04 12:30:02
【问题描述】:
在下面的代码中
let bodyData = "?sub=\(id)&name=User&email=test@test.com"
let url = NSURL(string: "https://httpbin.org/get");
let request:NSMutableURLRequest = NSMutableURLRequest(url:url as! URL)
request.httpMethod = "GET"
request.httpBody = bodyData.data(using: String.Encoding.utf8);
NSURLConnection.sendAsynchronousRequest(request as URLRequest, queue: OperationQueue.main)
{
(response, data, error) in
if let HTTPResponse = response as? HTTPURLResponse {
let statusCode = HTTPResponse.statusCode
if statusCode == 200 {
// Yes, Do something.
let json = try? JSONSerialization.jsonObject(with: data!, options: [])
if let dictionary = json as? [String: Any] {
let args = dictionary["args"]
NSLog("args:\(args)")
for (key, value) in dictionary{
NSLog("key:\(key) value:\(value)")
}
}
}
}
}
id 是传入函数的字符串。
它返回了有效数据,但测试站点/url 也以 json 格式返回您发送的任何参数。但是这段 sn-p 代码似乎没有发送 bodyData 中定义的查询参数,我不知道为什么。
【问题讨论】:
-
JSON *对象必须是数组或字典,您需要使用 JSONSerialization 从中获取 JSON 数据。你应该使用 URL 而不是 NSURL 和 URLRequest 而不是 NSURLReques。如果您需要可变请求,请将 URLRequest 声明为变量。
-
感谢您的快速回复。事实证明,GET 方法不会将查询参数附加到 URL。因此,在创建请求时,参数需要成为 URL 的一部分。
-
是的,我没有注意到您使用的是 get 而不是 post。您可以使用 URLComponents
标签: swift nsurlrequest