2013-10-11 5 views
9

में HttpURLConnection में HTTP अनुरोध को हटाएं मेरे पास सशक्त वेब सेवा है, और मैं POST भेजता हूं और HTTP अनुरोध प्राप्त करता हूं, कैसे JUVA के साथ httpURL कनेक्शन में PUT और DELTE अनुरोध HTTP भेजना है।PUT कैसे भेजें, JAVA

+0

आप एक छोटे पुस्तकालय कहा जाता है [DavidWebb] (https://github.com/hgoebl/DavidWebb) का उपयोग कर सकते HttpURLConnection के मूल उपयोग के लिए एक विकल्प के रूप। वहां आप समान पुस्तकालयों की एक सूची पा सकते हैं। HttpURLConnection का उपयोग मूल रूप से बोझिल और त्रुटि प्रवण है। – hgoebl

उत्तर

23

URL url = null; 
try { 
    url = new URL("http://localhost:8080/putservice"); 
} catch (MalformedURLException exception) { 
    exception.printStackTrace(); 
} 
HttpURLConnection httpURLConnection = null; 
DataOutputStream dataOutputStream = null; 
try { 
    httpURLConnection = (HttpURLConnection) url.openConnection(); 
    httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
    httpURLConnection.setRequestMethod("PUT"); 
    httpURLConnection.setDoInput(true); 
    httpURLConnection.setDoOutput(true); 
    dataOutputStream = new DataOutputStream(httpURLConnection.getOutputStream()); 
    dataOutputStream.write("hello"); 
} catch (IOException exception) { 
    exception.printStackTrace(); 
} finally { 
    if (dataOutputStream != null) { 
     try { 
      dataOutputStream.flush(); 
      dataOutputStream.close(); 
     } catch (IOException exception) { 
      exception.printStackTrace(); 
     } 
    } 
    if (httpsURLConnection != null) { 
     httpsURLConnection.disconnect(); 
    } 
} 

डाल DELETE

URL url = null; 
try { 
    url = new URL("http://localhost:8080/deleteservice"); 
} catch (MalformedURLException exception) { 
    exception.printStackTrace(); 
} 
HttpURLConnection httpURLConnection = null; 
try { 
    httpURLConnection = (HttpURLConnection) url.openConnection(); 
    httpURLConnection.setRequestProperty("Content-Type", 
       "application/x-www-form-urlencoded"); 
    httpURLConnection.setRequestMethod("DELETE"); 
    System.out.println(httpURLConnection.getResponseCode()); 
} catch (IOException exception) { 
    exception.printStackTrace(); 
} finally {   
    if (httpURLConnection != null) { 
     httpURLConnection.disconnect(); 
    } 
} 
+0

धन्यवाद सही है !!! केवल मुझे विधि हटाएं। !! – user2816207

+0

मुझे htpURLConnection.connect() को कॉल करने की आवश्यकता नहीं है? इस समारोह के लिए क्या है? –

-1

आप ओवरराइड कर सकते हैं

protected void doPut(HttpServletRequest req, 
         HttpServletResponse resp) throws ServletException, IOException; 

बढ़िया प्रदर्शन HTTP PUT संचालन; डिफ़ॉल्ट कार्यान्वयन HTTP BAD_REQUEST त्रुटि रिपोर्ट करता है। PUT ऑपरेशन एफ़टीपी के माध्यम से फ़ाइल भेजने के समान है। इस विधि को ओवरराइड करने वाले सर्वलेट लेखकों को किसी भी सामग्री- * अनुरोध के साथ भेजे गए शीर्षकों का सम्मान करना चाहिए। (इन शीर्षकों में सामग्री-लंबाई, सामग्री-प्रकार, सामग्री-स्थानांतरण-एन्कोडिंग, सामग्री-एन्कोडिंग, सामग्री-आधार, सामग्री-भाषा, सामग्री-स्थान, सामग्री-MD5, और सामग्री-श्रेणी शामिल हैं।) यदि उप-वर्ग सामग्री शीर्षलेख का सम्मान नहीं कर सकता है, तो उसे एक त्रुटि प्रतिक्रिया (501) जारी करनी होगी और अनुरोध को त्यागना होगा। अधिक जानकारी के लिए, HTTP 1.1 आरएफसी देखें।

इस विधि को या तो "सुरक्षित" या "idempotent" होने की आवश्यकता नहीं है। PUT के माध्यम से अनुरोध किए गए संचालन के दुष्प्रभाव हो सकते हैं जिसके लिए उपयोगकर्ता को उत्तरदायी माना जा सकता है। हालांकि आवश्यक नहीं है, सर्वलेट लेखकों जो इस विधि को ओवरराइड करते हैं, वे अस्थायी भंडारण में प्रभावित यूआरआई की एक प्रति सहेजना चाहते हैं।

और

protected void doDelete(HttpServletRequest req, 
         HttpServletResponse resp) throws ServletException, IOException 

बढ़िया प्रदर्शन HTTP हटाने की कार्रवाई; डिफ़ॉल्ट कार्यान्वयन रिपोर्ट एक HTTP BAD_REQUEST त्रुटि। DELETE ऑपरेशन क्लाइंट को सर्वर से निकालने के लिए अनुरोध करता है। इस विधि को "सुरक्षित" या "idempotent" होने के लिए की आवश्यकता नहीं है। DELETE के माध्यम से अनुरोध किए गए संचालन के दुष्प्रभाव हो सकते हैं जिसके लिए उपयोगकर्ताओं को उत्तरदायी माना जा सकता है। हालांकि आवश्यक नहीं है, इस विधि को उप-वर्गीकृत करने वाले सर्वलेट लेखकों अस्थायी संग्रहण में प्रभावित यूआरआई की एक प्रति सहेजना चाहते हैं।

+0

वे सर्वलेट एपीआई विधियां हैं लेकिन ओपी एक HTTP क्लाइंट के बारे में पूछ रहा है, मुझे लगता है कि –

+0

हो सकता है, लेकिन मुझे समझ में आया कि उसने पहले से ही एक सर्वलेट लागू किया है जो डेट और डूपट का प्रबंधन करता है और अन्य दो परिचालनों को लागू करने के बारे में जानना चाहता है – RamonBoza

+0

यदि, मेरे पास गेटर और पोस्ट टी है, मुझे डिलीट को लागू करने और विधियों को रखने की आवश्यकता है, हालांकि ऐसा नहीं आ रहा है क्योंकि tenngo एक इनपुट पैरामीटर मेरी मदद कर सकता है? - @MatthewGilliard – user2816207

4

अगर मैं @BartekM से हटाने का अनुरोध उपयोग करें, यह इस अपवाद प्राप्त करें:

java.net.ProtocolException: DELETE does not support writing 

यह सिर्फ ठीक करने के लिए, मैं इस निर्देश को हटाएं:

// httpURLConnection.setDoOutput(true); 

स्रोत: Sending HTTP DELETE request in Android