2010-08-06 7 views
20

भेजने से पहले एक HttpURLConnection का प्रदर्शन अनुरोध मैं HttpURLConnection का उपयोग कर सर्वर पर कुछ API कॉल करना चाहता हूं। लेकिन अनुरोध लौटने, सफल नहीं हैं:जावा:

<error> 
    <http_status>400 Bad Request</http_status> 
    <message>Unexpected request Content-Type header ''. Expecting 'application/x-www-form-urlencoded'.</message> 
</error> 

तो मैं जांच करने के लिए क्या "असली" सामग्री है कि सर्वर के लिए भेजा जा रहा है चाहता हूँ। वास्तविक सामग्री से मेरा मतलब सटीक HTTP अनुरोध है।

कोई विचार मैं इसे कैसे देख सकता हूं?

संपादित करें: पहले यहाँ उत्तर मैं मेरी समस्या को स्पष्ट करना चाहिए के आधार पर: मैं HTTP स्निफर या कुछ भी की तरह एक बाहरी प्रोग्राम का उपयोग से बचना चाहते हैं और मुझे उम्मीद थी एक समारोह या एक संपत्ति है कि वहाँ या जो कुछ भी है कि रखती है जो जानकारी मैं ढूंढ रहा हूं।

, अगर ऐसी बात नहीं है किसी को पता है कि अगर यह जानकारी मैन्युअल

मैं इस समस्या का सामना करना पड़ रहा थोड़े अक्सर इतना है कि यह है (getRequestMethod(), आदि जैसे कई कार्य को फोन करके उदाहरण के लिए) पुनर्निर्माण किया जा सकता खुद को ऐसी कार्यक्षमता बनाने के प्रयास के लायक है। बस यह जानने की जरूरत है कि कैसे :)

+0

संभावित डुप्लिकेट

-Djava.util.logging.config.file=logging.properties 

साथ java.logging को सक्षम करने से डिबग मोड में HttpURLConnection रख दिया और (JRE_HOME \ lib में डिफ़ॉल्ट रूप से) logging.properties में डाल सकते हैं निम्नलिखित संपत्ति [जावा HttpURLConnection ट्रैफ़िक के लिए तार लॉगिंग कैसे सक्षम करें?] (http://stackoverflow.com/questions/1445919/how-to-enable-wire-logging-for-a-java-httpurlconnection-traffic) – Vadzim

उत्तर

14

आप

sun.net.www.protocol.http.HttpURLConnection.level = ALL 
+0

मैं नहीं वास्तव में पता है कि मुझे ऊपर बताए गए कोड की रेखा के साथ क्या करना है .. मुझे पु को कहां करने की आवश्यकता है यह टी नहीं है? (ग्रहण के रूप में ग्रहण का उपयोग करके) – Hirnhamster

+2

आपको "java.util.logging.ConsoleHandler.level = FINEST" – Gili

+1

@Hirnhamster, रन कॉन्फ़िगरेशन में - तर्क टैब में सेट करने की आवश्यकता है, आप VM तर्क अनुभाग में जोड़ते हैं। – RealHowTo

0

tcpdump जैसे कुछ का उपयोग करें, जो आपके कंप्यूटर द्वारा उत्सर्जित या प्राप्त वास्तविक नेटवर्क पैकेट को डंप कर सकता है।

4

tcpdump काम करेगा, लेकिन यह करना मुश्किल हो सकता है जो आप चाहते हैं। नेटकैट अधिक उपयोगकर्ता के अनुकूल है (यहां प्रोजेक्ट पेज है: http://netcat.sourceforge.net/ - अधिकांश यूनिक्स प्लेटफॉर्म पहले से ही इसमें शामिल हैं)।

nc -l 9999 

यह जब एक HTTP ग्राहक जोड़ता है, यह अनुरोध का पूरा पाठ प्रिंट आउट कर देंगे, TCP पोर्ट 9999 पर सुनने और होगा।

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

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