使用NSURLSession将Android帖子请求转换为iOS swift

时间:2016-07-14 20:49:52

标签: android ios swift http post

我正在尝试将我的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中,这将非常有用。

3 个答案:

答案 0 :(得分:1)

@Naga Krishnamraju 对于您的第二个问题,您需要解析json字符串以对象,您可以使用以下方式进行

{{1}}

答案 1 :(得分:0)

您是否忘了添加task.resume

答案 2 :(得分:0)

阻止之后

task.resume()将完成工作