gpt4 book ai didi

swift - 快速发布json请求

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

我知道如何发布简单的 json:

 // Compose a query string
let postString = “firstName=James&lastName=Bond”;
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding);

现在服务器端需要像这样的json格式:

{ 
"name": "testuser123",
"pass": "testuser123",
"field_shouji":
{ "und":
[{
"value": "15652344931"
}]
}
}

内容类型应该是:application/json。我用谷歌搜索了一整天,仍然可以找到正确的方法。

最佳答案

您需要发送有效的 JSON 格式。
“firstName=James&lastName=Bond”; 不是 JSON 格式。

swift 4

自从 Swift 3 和 4 Apple 开始删除 NS* 东西(即使其中许多只是 NS* 的别名)我们将使用更多 快速方式

//Method just to execute request, assuming the response type is string (and not file)
func HTTPsendRequest(request: URLRequest,
callback: @escaping (Error?, String?) -> Void) {
let task = URLSession.shared.dataTask(with: request) { (data, res, err) in
if (err != nil) {
callback(err,nil)
} else {
callback(nil, String(data: data!, encoding: String.Encoding.utf8))
}
}
task.resume()
}

// post JSON
func HTTPPostJSON(url: String, data: Data,
callback: @escaping (Error?, String?) -> Void) {

var request = URLRequest(url: URL(string: url)!)

request.httpMethod = "POST"
request.addValue("application/json",forHTTPHeaderField: "Content-Type")
request.addValue("application/json",forHTTPHeaderField: "Accept")
request.httpBody = data
HTTPsendRequest(request: request, callback: callback)
}

使用示例

var dict = Dictionary<String, Any>()

dict["username"] = "hello"
dict["password"] = "swift"
let data = try JSONSerialization.data(withJSONObject: dict, options: [])

HTTPPostJSON(url: "http://example.com/login", data: data) { (err, result) in
if(err != nil){
print(err!.localizedDescription)
return
}
print(result ?? "")
}

swift <4

func HTTPsendRequest(request: NSMutableURLRequest,
callback: (String, String?) -> Void) {
let task = NSURLSession.sharedSession()
.dataTaskWithRequest(request) {
(data, response, error) -> Void in
if (error != nil) {
callback("", error.localizedDescription)
} else {
callback(NSString(data: data,
encoding: NSUTF8StringEncoding)! as String, nil)
}
}

task.resume()
}

func HTTPPostJSON(url: String, data: NSData,
callback: (String, String?) -> Void) {

var request = NSMutableURLRequest(URL: NSURL(string: url)!)

request.HTTPMethod = "POST"
request.addValue("application/json",forHTTPHeaderField: "Content-Type")
request.addValue("application/json",forHTTPHeaderField: "Accept")
request.HTTPBody = data
HTTPsendRequest(request, callback: callback)
}

使用示例

我们将设置 NSMutableDictionary 并将其转换为 JSON

var json = NSMutableDictionary()
json.setValue("testuser123", forKey: "name"); //set all your values..

let data = NSJSONSerialization.dataWithJSONObject(json, options: NSJSONWritingOptions(0), error: nil);
HTTPPostJSON("http;..", data:data!) { (response, error) -> Void in
println(response);
}

关于swift - 快速发布json请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32201926/

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