2012-10-18 11 views
5

का उपयोग HttpClient 4.1.3, मैं निम्नलिखित कोड लिखा है में पुन: पेश नहीं कर सकते हैं:अपाचे HttpClient HTTP 500s throwng है, लेकिन एक ब्राउज़र

HttpClient httpClient = HttpClientFactory.newHttpClient(); 
HttpGet httpGet = new HttpGet("some/url/to/hit"); 
HttpResponse httpResp = httpClient.execute(httpGet); 
int statusCode = httpResp.getStatusLine().getStatusCode(); 
if(statusCode != HttpStatus.SC_OK) 
    throw new Exception(/* ... */); 

HTTP 500 प्रतिक्रियाएं हो रही है यही कारण है कि (जैसा कि httpResp.getStatusLine().getStatusCode() में पाया) एक विशेष यूआरएल से और अपवाद फेंकना।

बात यह है कि, जब मैं ब्राउज़र में "असफल" यूआरएल पर जाता हूं, तो यह पूरी तरह से ठीक चल रहा है।

तो मैं पूछना:

  • सका HttpClient बाहर समय, अनुरोध-प्रतिक्रिया चक्र शॉर्ट-सर्किट, और बस मुझे एक HTTP 500 दे रही हो सकता है?
  • यहां और क्या हो सकता है? HttpClient के लिए मुझे 500s देने के लिए यह कैसे संभव है जब ब्राउजर एक ही सटीक यूआरएल के लिए पेज को पूरी तरह ठीक दिखा रहा हो?

अग्रिम धन्यवाद!

+0

वेब ब्राउज़र से अनुरोध को डीबग करने का प्रयास करें। शायद आपकी समस्या का कारण यह है कि आप सर्वर द्वारा अपेक्षित हेडर सेट नहीं कर रहे हैं। – deadlock

+0

आप किस सर्वर पर टक्कर मार रहे हैं? अपने आने वाले अनुरोध को देखने के लिए अनुरोध लॉगिंग चालू करें। क्या आपके पास सर्वर पर त्रुटि लॉग तक पहुंच है? यदि यह 500 लौट रहा है, तो लॉग होना चाहिए। – jalynn2

+0

@ jalynn2 - मैं लॉगिंग अनुरोध कैसे चालू करूं? क्या यह एक HttpClient निर्माण है या आप फायरबग कंसोल जैसे कुछ के बारे में बात कर रहे हैं? – IAmYourFaja

उत्तर

2

मुझे एक ही समस्या थी। मैं ब्राउज़र के माध्यम से एक वेब साइट तक पहुंच सकता था लेकिन अपाचे http क्लाइंट का उपयोग करते समय, मुझे लगातार http 500 आंतरिक सर्वर त्रुटि मिली। समस्या "सामग्री-प्रकार" हैडर प्राप्त करें। इसका मूल्य "मल्टीपार्ट/संबंधित" था, जो कुछ सर्वर पसंद नहीं करते हैं। मैंने इसे "टेक्स्ट/एचटीएमएल" में बदल दिया और यह सब ठीक काम किया।

उम्मीद है कि इससे मदद मिलती है।

+0

अरे @ cristian.petroaca की मुझे एक ही समस्या है लेकिन सामग्री प्रकार को बदलने से मदद नहीं मिलती है – 2Big2BeSmall

1

मुझे एक वसंत एक्सएमएल आधारित एपीआई तक पहुंचने में एक ही समस्या थी। स्वीकृति हेडर को एक्सएमएल और एचटीएमएल में सेट करके हल की गई समस्या।

httpGet.setHeader("Accept", "text/html,application/xhtml+xml,application/xml;"); 
संबंधित मुद्दे