2016-07-14 4 views
2

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 ")));)を"スウィフトでは、それは本当に役に立つでしょう。

+0

応答終了が呼び出されますか? – Andrew

+0

task.resume()が解決策でした。応答閉鎖は最初に呼び出されませんでした。 –

+0

task.resume()がリクエストを実行しましたが、 "request.setEntity(new ByteArrayEntity( json.toString()。getBytes(" UTF8 ")));"スウィフトで –

答えて

0

task.resumeを忘れましたか?

+0

あなたは右ハハの感謝です! –

+0

それが良いのであれば、私を答えとしてマークしてください.. thx .. –

+0

。彼らはちょうど私の答えをコピーしました:o。私はより速い人です。時間を確認してください。 –

0

task.resume()ブロックした後でジョブを実行します

+0

ありがとうございます! –

関連する問題