我知道如何发布简单的 json:
I know how to post simple json:
// Compose a query string let postString = "firstName=James&lastName=Bond"; request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding);现在服务器端需要这样的json格式:
Now the server side require the json format like:
{ "name": "testuser123", "pass": "testuser123", "field_shouji": { "und": [{ "value": "15652344931" }] } }并且内容类型应该是:application/json.我已经用谷歌搜索了一整天,仍然可以找到正确的方法.
and the content type should be: application/json. I have googled the whole day, still could find the right way.
推荐答案您需要发送有效格式的 JSON.firstName=James&lastName=Bond"; 不是 JSON格式.
You need to send a valid format of JSON."firstName=James&lastName=Bond"; is not JSON format.
自从 Swift 3 和 4 Apple 开始移除 NS* 的东西(即使其中很多只是 NS* 的别名),我们将使用更多的 Swift 方式
Since Swift 3 and 4 Apple is starting to remove NS* stuff (even that many of them are just aliases to NS*) we'll use more Swift way
//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: "example/login", data: data) { (err, result) in if(err != nil){ print(err!.localizedDescription) return } print(result ?? "") }斯威夫特 <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
we'll set NSMutableDictionary and convert it to 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); }更多推荐
快速发布json请求
发布评论