2016-10-04 7 views
-2

これはiOSでWebサービスを呼び出す方法です。httpheadersとパラメータを持つiOSと似たAndroidでのWebサービスの呼び出し

let request = NSMutableURLRequest(URL: NSURL(string: "reqesturl")!) 
    let session = NSURLSession.sharedSession() 

    request.HTTPMethod = "POST" 

    let params = ["key1": value1, "key2": value2, "key3": value3, "key4": value4] as Dictionary<String, AnyObject> 

    request.HTTPBody = try! NSJSONSerialization.dataWithJSONObject(params, options: .PrettyPrinted) 

    request.addValue("application/json", forHTTPHeaderField: "Content-Type") 

    request.addValue("application/json", forHTTPHeaderField: "Accept") 

    request.addValue(SESSION_ID!, forHTTPHeaderField: "sSessionId") 

    let task = session.dataTaskWithRequest(request) {(data, response, error) in 
     dispatch_async(dispatch_get_main_queue(), { 
      if response != nil { 
       let httpResponse = response as? NSHTTPURLResponse 
       let status = httpResponse!.allHeaderFields["internalErrors"] as? String 
       self.statusCode = Int(status!) 

       if self.statusCode != nil { 
        if self.statusCode > 0 && self.statusCode < ERRORCODE.count { 
         if self.statusCode == 8 { 
          APPDELEGATE?.showErrorCode(self.statusCode) 
         } 
         postCompleted(Succeeded: false , CheckinDetails: "Failed") 

        } 
       }else { 
        APPDELEGATE?.showErrorCode(78) 
       } 

      }else { 
       postCompleted(Succeeded: false , CheckinDetails: "Failed") 
      } 
     }) 
    } 
    task.resume() 

これをAndroidでどのように達成できますか?私はWebリクエストにHttpヘッダーフィールドを追加しようとしています。次に、このリクエストにパラメータを追加します。私はアンドロイド開発に新しいです。

+0

HttpUrlConnectionクラスを見てください。アンドロイドデベロッパートレーニングhttps://developer.android.com/training/basics/network-ops/connecting.html#downloadの小さな説明です。リクエストヘッダを追加するには、setRequestPropertyメソッドを使用します。 – MatPag

答えて

0

これはあなたのユースケースの完全な解決策です。明らかにJSONを取得するには適切な方法が必要です。ジャクソンやGSONライブラリを使ってJSONオブジェクトと文字列を管理することをお勧めします。

public String httpPOSTrequest(String url, String json) { 

    //if request will success, the server response will be saved here 
    String response = ""; 

    try { 

     URL urll = new URL(url); 
     HttpsURLConnection conn = (HttpsURLConnection) urll.openConnection(); 
     conn.setReadTimeout(10000); 
     conn.setConnectTimeout(15000); 
     conn.setRequestMethod("POST"); 
     conn.setRequestProperty("Content-Type", "application/json"); 
     conn.setRequestProperty("Accept", "application/json"); 
     conn.setDoInput(true); 
     conn.setDoOutput(true); 


     OutputStream os = conn.getOutputStream(); 
     BufferedWriter writer = new BufferedWriter(
       new OutputStreamWriter(os, "UTF-8")); 
     writer.write(json); 
     writer.flush(); 
     writer.close(); 
     os.close(); 

     conn.connect(); //real call starts here 

     int responseCode = conn.getResponseCode() 

     if (responseCode == HttpsURLConnection.HTTP_OK) { 
      String line; 
      BufferedReader br = new BufferedReader(
        new InputStreamReader(conn.getInputStream())); 
      while ((line=br.readLine()) != null) { 
        response+=line; 
      } 
     } 
    } catch (Exception e { 
     e.printStackTrace(); 
    } 

    return response; 
} 

さらに、このコードではエラー処理が必要ですが、良いスタートポイントになると思います。

関連する問題