2011-08-15 13 views
12

की स्थापना मैं अपने HttpURLConnection में सामग्री की लंबाई सेट कर रहा हूं एक PUT के लिए।जावा, HttpURLConnection और सामग्री की लंबाई

urlConnection.setRequestProperty("Content-Length", "" + responseJSONArray.toString(2).getBytes("UTF8").length); 

बाइट्स की वास्तविक संख्या जब मैं urlConnection की सामग्री की लंबाई मैं वापस आ रहा हूँ -1 क्वेरी 74 हालांकि, है। ऐसा क्यों है? और लंबाई बराबर क्यों नहीं है (दिया गया है कि मैंने इसे सेट किया है)?

मैं सामग्री-लंबाई क्योंकि मैं सर्वर से एक 411 प्रतिक्रिया प्राप्त कर रहा हूँ सेट करना होगा।

(इसके अलावा, सूर्य examples में मैंने देखा है setRequestProperty का दूसरा तर्क नहीं String है, जो अजीब लगता है प्रकार int की है और।)

+0

मैंने इस प्रश्न का उत्तर दिया और मुझे अब एहसास हुआ कि इसे एंड्रॉइड टैग मिला है। मुझे नहीं पता कि Google ने 'HttpURLConnection' को कैसे कार्यान्वित किया। –

+0

@ द एलिट जेंटलमैन को उन्हें मौजूदा जावाडोक विनिर्देश से सहमत होना होगा, और आपके गलतफहमी के कार्यान्वयन के बीच संभावित बदलावों के साथ कुछ भी नहीं करना था। – EJP

उत्तर

19

आप इस शीर्ष लेख अपने आप को सेट नहीं करना चाहिए। setFixedLengthStreamingMode() या setChunkedTransferMode() का उपयोग करें।

+0

धन्यवाद। मुझे अभी भी कुछ समझ में नहीं आ रहा है: अब मैं 'urlConnection.setFixedLengthStreamingMode (respondJSONArray.toString (2) .getBytes ("UTF8") लंबाई कर रहा हूं;; '। शरीर की लंबाई '74' बाइट है, हालांकि जब मैं 'Log.v (" ऐप "," "+ urlConnection.getContentLength()) कहता हूं;' मैं' -1' देखता हूं। ऐसा क्यों है? – SK9

+1

@ एसके 9 * प्रतिक्रिया की लंबाई है। * – EJP

+0

धन्यवाद। ऐसा लगता है कि मेरे लिए अनावश्यक रूप से संदिग्ध लगता है! – SK9

2

इसके अलावा एक setDoOutput जोड़ने के लिए अपने कनेक्शन को बताने के लिए आप डेटा भेजने के लिए जा रहे हैं मत भूलना।

+0

धन्यवाद। मैं पहले से ही हूं ('urlConnection.setDoOutput (सत्य) के साथ;')। – SK9

+0

यह सही ढंग से -1 होना चाहिए, क्योंकि आप सर्वर से कुछ प्राप्त नहीं कर रहे डेटा भेज रहे हैं। getContentLenght(): "प्रतिक्रिया हेडर फ़ील्ड सामग्री-लंबाई या -1 द्वारा निर्दिष्ट बाइट्स में सामग्री की लंबाई देता है यदि यह फ़ील्ड सेट नहीं है।" [HttpURLConnection के लिए एंड्रॉयड जावाडोक] (http://developer.android.com/reference/java/net/HttpURLConnection.html) से –

+1

हम्म - मैंने सोचा था कि सामग्री-लंबाई क्षेत्र निर्दिष्ट HTTP अनुरोध मैं था की बाइट-लंबाई तैयार कर रहे हैं। – SK9

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^