2012-09-21 13 views
14

मैं अपने शरीर में एक जेसन ऑब्जेक्ट के साथ एक HTTP GET भेजने की कोशिश कर रहा हूं। HttpClient HttpGet के शरीर को सेट करने का कोई तरीका है? मैं HttpPost # setEntity के बराबर की तलाश में हूं।अपाचे एचटीपी क्लाइंट शरीर के साथ प्राप्त करें

+0

लगभग नकल: http://stackoverflow.com/questions/978061/http-get-with-request-body –

+0

निकिता - मेरा प्रश्न एक आप पोस्ट करने के लिए इसी तरह की है, लेकिन मैं विशेष रूप से कैसे पूछ रहा हूँ Apache HttpClient API के माध्यम से ऐसा करने के लिए। फिर भी आपका धन्यवाद। –

+0

उत्तर का आक्रामक रूप से यह संभव नहीं है। जीईटी अनुरोध विनिर्देश के अनुसार शरीर नहीं हो सकता है। आपको POST अनुरोधों का उपयोग करने की आवश्यकता है। –

उत्तर

20

जो मुझे पता है, उससे आप डिफ़ॉल्ट एचटीपीजीट क्लास के साथ ऐसा नहीं कर सकते जो अपाचे लाइब्रेरी के साथ आता है। हालांकि, आप HttpEntityEnclosingRequestBase इकाई उपखंड कर सकते हैं और GET को विधि सेट कर सकते हैं। मैं इस परीक्षण नहीं किया है, लेकिन मैं निम्न उदाहरण क्या आप देख रहे हैं हो सकता है लगता है:

import org.apache.http.client.methods.HttpEntityEnclosingRequestBase; 

public class HttpGetWithEntity extends HttpEntityEnclosingRequestBase { 
    public final static String METHOD_NAME = "GET"; 

    @Override 
    public String getMethod() { 
     return METHOD_NAME; 
    } 
} 

संपादित करें:

... 
HttpGetWithEntity e = new HttpGetWithEntity(); 
... 
e.setEntity(yourEntity); 
... 
response = httpclient.execute(e); 
+0

अच्छा। धन्यवाद। –

+0

आपका स्वागत है। अगर यह शायद काम करता है तो हमें बताएं? :) – torbinsky

+0

क्या यह दृष्टिकोण काम करता है? – Jilberta

4

का उपयोग करना:

इसके बाद आप निम्न कर सकता है torbinsky के जवाब मैंने उपरोक्त वर्ग बनाया। यह मुझे HttpPost के लिए एक ही तरीके का उपयोग करने देता है।

import java.net.URI; 

import org.apache.http.client.methods.HttpPost; 

public class HttpGetWithEntity extends HttpPost { 

    public final static String METHOD_NAME = "GET"; 

    public HttpGetWithEntity(URI url) { 
     super(url); 
    } 

    public HttpGetWithEntity(String url) { 
     super(url); 
    } 

    @Override 
    public String getMethod() { 
     return METHOD_NAME; 
    } 
} 
+0

पर काम करता प्रतीत होता है मैंने उपरोक्त कोड को एक वेब सेवा के साथ करने की कोशिश की जिसे मुझे अपनी परियोजना पर बात करने की ज़रूरत है और नहीं। मुझे बस सेवा डिमन लॉग "आंतरिक अनुप्रयोग त्रुटि, कनेक्शन बंद करने" पर प्राप्त होता है। जर्सी ने इकाइयों के साथ एक एचटीपीजीट की पेशकश की (जिसे अलग-अलग कहा जाता है), लेकिन दुख की बात है कि अपाचे नहीं है। यह विशेष वेब सेवा वास्तव में एक जीईटी अनुरोध की उम्मीद है, न कि एक पोस्ट। –

0

कैसे हम सिर्फ HttpGet & HttpPost की तरह इस उदाहरण में अनुरोध URI भेज सकते हैं ???

public class HttpGetWithEntity extends HttpEntityEnclosingRequestBase 
{ 
    public final static String METHOD_NAME = "GET"; 
    @Override 
    public String getMethod() { 
     return METHOD_NAME; 
    } 

     HttpGetWithEntity e = new HttpGetWithEntity(); 
     e.setEntity(yourEntity); 
     response = httpclient.execute(e); 
} 
संबंधित मुद्दे