2012-05-15 10 views
9

में पोस्ट पैरामीटर के साथ सरल http पोस्ट अनुरोध कैसे भेजें, मुझे फॉर्म इनपुट से प्राप्त पोस्ट पैरामीटर के साथ http पोस्ट अनुरोध भेजने का एक सरल कोड उदाहरण चाहिए। मुझे अपाचे HTTP क्लाइंट मिला है, इसमें बहुत से एपीआई और बहुत से परिष्कृत उदाहरण हैं, लेकिन मुझे इनपुट पैरामीटर के साथ http पोस्ट अनुरोध भेजने और टेक्स्ट प्रतिक्रिया प्राप्त करने का एक सरल उदाहरण नहीं मिला।जावा

अद्यतन: मुझे अपाचे HTTP क्लाइंट v.4.x में रूचि है, क्योंकि 3.x को बहिष्कृत किया गया है।

+0

http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/Servlet- ट्यूटोरियल- फर्स्ट-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 करने की अनुमति देता है। अगर मेरे पास समय था, तो मैं एक पीओजेओ उदाहरण तैयार करूंगा, लेकिन उम्मीद है कि आप कोड को विच्छेदित कर सकते हैं और आपको जो चाहिए उसे ढूंढ सकते हैं।

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 का उपयोग करके, एचटीपी पोस्ट के लिए नमूना कोड।

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

धन्यवाद, सुमित। मुझे ऐसे उदाहरण की ज़रूरत है, लेकिन आपका उदाहरण अपाचे एचटीपी क्लाइंट v। 3.x का उपयोग कर रहा है, जिसे बहिष्कृत किया गया है (यहां तक ​​कि मुझे उनके डाउनलोड पेज में 3.x संस्करण जार नहीं मिल सका)। अब वे HttpClient v.4.1 का सुझाव देते हैं, जिसमें अलग-अलग एपीआई है, लेकिन मुझे नहीं लगता कि इस एपीआई के साथ पोस्ट पैरामीटर कैसे डालें। – Arshak

+3

मुझे httpClient v.3 के लिए जार मिल गए हैं और यह मेरे लिए काम करता है, लेकिन फिर भी मुझे आश्चर्य है कि वी। 4.1 और सामान्य रूप से जावा में सरल पोस्ट अनुरोध भेजने के लिए इतना जटिल क्यों है। – Arshak

+0

हाय क्या आप अतिरिक्त पैरामीटर जोड़ सकते हैं जो फ़ाइल ऑब्जेक्ट स्वीकार करता है? धन्यवाद – Secondo