我正在尝试将我的Android帖子请求转换为iOS(Swift)。目前,这是Android代码:
JSONObject json = new JSONObject();
json.put("major", Major);
json.put("minor", Minor);
json.put("uuid", UUID);
json.put("userid", id);
int TIMEOUT_MILLISEC = 10000; // = 10 seconds
HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, TIMEOUT_MILLISEC);
HttpConnectionParams.setSoTimeout(httpParams, TIMEOUT_MILLISEC);
HttpClient client = new DefaultHttpClient(httpParams);
HttpPost request = new HttpPost("http://" + ipAddress + ":8080/");
request.setHeader("Content-Type", "application/json");
request.setEntity(new ByteArrayEntity(
json.toString().getBytes("UTF8")));
HttpResponse response = client.execute(request);
这完全没问题。 但是,当我尝试将其转换为Swift时,即使我知道它正在执行请求,服务器也不会收到任何内容。
夫特:
var request = NSMutableURLRequest(URL: NSURL(string: URLString)!)
var session = NSURLSession.sharedSession()
request.HTTPMethod = "POST"
var params = ["major": "1", "minor": "2", "uuid": "00000000-1111-2222-3333-444444444444", "userid": "3"] as Dictionary<String, String>
request.HTTPBody = try! NSJSONSerialization.dataWithJSONObject(params, options: [])
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
let task = session.dataTaskWithRequest(request) { data, response, error in
guard data != nil else {
print("no data found: \(error)")
return
}
do {
if let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary {
let success = json["success"] as? Int
} else {
let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding)
}
} catch let parseError {
let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding)
}
}
任何帮助或方向都会很好。感谢。
编辑1:task.resume()从服务器获得了响应。但是,如果有人知道如何转换“request.setEntity(new ByteArrayEntity(json.toString()。getBytes(”UTF8“)));”在Swift中,这将非常有用。
答案 0 :(得分:1)
@Naga Krishnamraju 对于您的第二个问题,您需要解析json字符串以对象,您可以使用以下方式进行
{{1}}
答案 1 :(得分:0)
您是否忘了添加task.resume
?
答案 2 :(得分:0)
task.resume()
将完成工作