2012-09-27 12 views
6

मैं एक webapp लेखन और भी रूप में http://dropwizard.codahale.com/manual/client/#man-client-jerseyजर्सी ग्राहक सामग्री-लंबाई

में उल्लेख किया है लेकिन ऐसा लगता है जर्सी क्लाइंट के प्रयोग के लिए dropwizard उपयोग कर रहा हूँ निर्धारित नहीं करता है कि जब भी मैं जर्सी ग्राहक का उपयोग कर एक पोस्ट करने की कोशिश दूरस्थ webservice शिकायत करता है कि सामग्री-लंबाई शीर्षलेख गुम है और विफल रहता है।

public JobResponse createJob(JobRequest job) { 
     return jerseyClient.resource(URI.create(JOBS_URL)) 
       .type(MediaType.APPLICATION_JSON_TYPE) 
       .header("Api-Key", job.getApiKey()) 
       .post(JobResponse.class, job); 
    } 

मैंने पुष्टि की है कि अनुरोध में हेडर नहीं है और मेरे सर्वोत्तम प्रयासों के बावजूद मैं यह समझने में सक्षम नहीं हूं कि यह क्यों हो रहा है। क्या किसी को पता है कि कुछ ऐसा है जो मुझे याद आ रहा है?

पुनश्च: सेवा है कि मैं हिट करने के लिए कोशिश कर रहा हूँ https://app.zencoder.com/docs/api/jobs/create

उत्तर

7

यह "मुद्दा" और वास्तव में अभिप्रेत व्यवहार जाना जाता है।

समस्या यह है कि इकाई को संसाधित किया जाता है जब हेडर "तार" के लिए लिखे जाते हैं, इस प्रकार सामग्री-लंबाई हेडर मान को पता नहीं होता है जब हेडर को क्रमबद्ध किया जाता है। यदि आपको यह करने की आवश्यकता है, तो आपके पास कई विकल्प हैं (विभिन्न जटिलताओं के साथ):

  1. स्वयं द्वारा क्रमबद्ध इकाई; यदि आप स्ट्रिंग (या बाइट []) के रूप में इकाई प्रदान करते हैं, तो सामग्री-लंबाई सेट की जानी चाहिए।

  2. अपना खुद का संदेशबॉडीवाइटर बनाएं, जो getSize() विधि कॉल में इकाई के आकार की गणना करेगा।

कुछ और तरीका हो सकता है कि यह कैसे करें, लेकिन मैं अभी किसी और के बारे में नहीं सोच सकता .. उम्मीद है कि इससे मदद मिलती है।

+0

आपके इनपुट के लिए धन्यवाद। क्या आप जानते हैं कि इसके लिए कोई बग खुला है या नहीं और मुझे यह जानने में दिलचस्पी होगी कि ये "अन्य तरीकों" क्या हो सकते हैं। –

3

मुझे एक ही समस्या का सामना करना पड़ रहा था और पावेल का जवाब मेरे लिए काम नहीं कर रहा था (मैं फॉर्ममुतिपार्ट ऑब्जेक्ट का उपयोग कर रहा था)।

मैं ApacheHttpClient4 के बजाय नियमित com.sun.jersey.api.client.Client उपयोग कर रहा था। जर्सी क्लाइंट में वापस बदलकर, सामग्री-लेनग की गणना की जाती है (कम से कम फॉर्ममुल्टीपार्ट इकाई के मामले में)।

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