Androidの投稿リクエストをiOS(Swift)に変換しようとしています。これは完全に正常に動作NSURLSessionを使用してAndroidの投稿リクエストをiOS対応に変換する
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);
:現在、これはAndroidのコードです。 しかし、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 ")));)を"スウィフトでは、それは本当に役に立つでしょう。
応答終了が呼び出されますか? – Andrew
task.resume()が解決策でした。応答閉鎖は最初に呼び出されませんでした。 –
task.resume()がリクエストを実行しましたが、 "request.setEntity(new ByteArrayEntity( json.toString()。getBytes(" UTF8 ")));"スウィフトで –