2012-05-15 8 views
9

フォーム入力から取得したポストパラメータでhttpポストリクエストを送信する簡単なコード例が必要です。 私はApache HTTPClientを見つけました。APIと非常に洗練された例がたくさんありますが、入力パラメータとHTTPレスポンスを送信してテキスト応答を受け取るという簡単な例は見つかりませんでした。ポストパラメータをjavaで簡単に送信する方法

アップデート:私はApache HTTPClient v.4.xに興味があります.3.xは非推奨です。

+0

http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/Servlet- Tutorial-First-Servlets.html –

答えて

3

アパッチを使用してHTTP POSTリクエストの一例のHttpClient v.4.x

HttpClient httpClient = HttpClients.createDefault(); 
HttpPost httpPost = new HttpPost(url); 
MultipartEntityBuilder builder = MultipartEntityBuilder.create(); 
builder.addTextBody("param1", param1Value, ContentType.TEXT_PLAIN); 
builder.addTextBody("param2", param2Value, ContentType.TEXT_PLAIN); 
HttpEntity multipart = builder.build(); 
httpPost.setEntity(multipart); 
HttpResponse response = httpClient.execute(httpMethod); 
3

は、私は自分のアプリケーションに使用されてきたアンドリューGertig Android(アンドロイド)プロジェクトからこのコードを引っ張りました。それはあなたがHTTPostを行うことができます。時間があれば、私はPOJOの例を作成しますが、うまくいけばコードを解読して必要なものを見つけることができます。

Arshak

https://github.com/AndrewGertig/RubyDroid/blob/master/src/com/gertig/rubydroid/AddEventView.java

private void postEvents() 
{ 
    DefaultHttpClient client = new DefaultHttpClient(); 

    /** FOR LOCAL DEV HttpPost post = new HttpPost("http://192.168.0.186:3000/events"); //works with and without "/create" on the end */ 
    HttpPost post = new HttpPost("http://cold-leaf-59.heroku.com/myevents"); 
    JSONObject holder = new JSONObject(); 
    JSONObject eventObj = new JSONObject(); 

    Double budgetVal = 99.9; 
    budgetVal = Double.parseDouble(eventBudgetView.getText().toString()); 

    try { 
     eventObj.put("budget", budgetVal); 
     eventObj.put("name", eventNameView.getText().toString()); 

     holder.put("myevent", eventObj); 

     Log.e("Event JSON", "Event JSON = "+ holder.toString()); 

     StringEntity se = new StringEntity(holder.toString()); 
     post.setEntity(se); 
     post.setHeader("Content-Type","application/json"); 


    } catch (UnsupportedEncodingException e) { 
     Log.e("Error",""+e); 
     e.printStackTrace(); 
    } catch (JSONException js) { 
     js.printStackTrace(); 
    } 

    HttpResponse response = null; 

    try { 
     response = client.execute(post); 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
     Log.e("ClientProtocol",""+e); 
    } catch (IOException e) { 
     e.printStackTrace(); 
     Log.e("IO",""+e); 
    } 

    HttpEntity entity = response.getEntity(); 

    if (entity != null) { 
     try { 
      entity.consumeContent(); 
     } catch (IOException e) { 
      Log.e("IO E",""+e); 
      e.printStackTrace(); 
     } 
    } 

    Toast.makeText(this, "Your post was successfully uploaded", Toast.LENGTH_LONG).show(); 

} 
15

ここですApache HTTPClient APIを使用して、Http POSTのサンプルコード。

import java.io.InputStream; 
import org.apache.commons.httpclient.HttpClient; 
import org.apache.commons.httpclient.methods.PostMethod; 


public class PostExample { 
    public static void main(String[] args){ 
     String url = "http://www.google.com"; 
     InputStream in = null; 

     try { 
      HttpClient client = new HttpClient(); 
      PostMethod method = new PostMethod(url); 

      //Add any parameter if u want to send it with Post req. 
      method.addParameter("p", "apple"); 

      int statusCode = client.executeMethod(method); 

      if (statusCode != -1) { 
       in = method.getResponseBodyAsStream(); 
      } 

      System.out.println(in); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

    } 
} 
+0

ありがとう、Sumit。私はそのような例が必要ですが、あなたの例ではApache HttpClient v。3.xを使用していますが、これは推奨されません(ダウンロードページで3.xバージョンのjarファイルが見つからなくても)。今、彼らは異なるAPIを持っているHttpClient v.4.1を提案しますが、私はこのAPIを使ってポストパラメータを置く方法を見つけません。 – Arshak

+3

私はhttpClient v.3のjarファイルを見つけましたが、それは私のために動作しますが、とにかくv。4.1の単純な投稿要求とJavaの一般的なものを送るのはなぜそんなに複雑かと思います。 – Arshak

+0

hiファイルオブジェクトを受け入れる追加のパラメータを追加できますか?ありがとう – Secondo

関連する問題