java - ClientProtocolException में httpClient.execute(httpget, responseHandler)




android http-get (3)

आप अपना स्वयं का प्रतिसाद इंटरसेप्टर जोड़ने का प्रयास कर सकते हैं, जहां आप हेडर जोड़ सकते हैं या हटा सकते हैं या कुछ डीबग जानकारी प्रिंट कर सकते हैं

hc.addResponseInterceptor(new HttpResponseInterceptor() {
    @Override
    public void process(HttpResponse response, HttpContext context) throws HttpException, IOException {
        response.getEntity().writeTo(System.out);
    }
});

मैं वेब सर्वर से xml का अनुरोध करने के लिए निम्नलिखित कोड का उपयोग कर रहा हूं:

HttpClient httpclient = new DefaultHttpClient()
try 
{
    HttpGet httpget = new HttpGet("http://63.255.173.242/get_public_tbl.cgi?A=1");              
    ResponseHandler responseHandler = new BasicResponseHandler();
    String responseBody = httpclient.execute(httpget, responseHandler);
    System.out.println(responseBody);
}
catch (ClientProtocolException e)
{
    e.printStackTrace();
}
catch (IOException e)
{
    e.printStackTrace();
} 
finally 
{
    httpclient.getConnectionManager().shutdown();
}

जब मैं httpclient.execute (httpget, responseHandler) को कॉल करता हूं, तो मुझे एक क्लाइंट प्रोटोकॉल ऐक्सप्शन मिलता है। यूआरएल एक वेब ब्राउज़र में ठीक काम करता है, यह एक्सएम रिटर्न करता है और ब्राउज़र इसे प्रदर्शित करता है

कोई भी विचार क्यों मुझे क्लाइंट प्रोटोकॉल अपॉक्सेशन मिलेगा और ब्राउज़र अभी भी ठीक से संभालता है?

1 संपादित करें:

प्रोटोकॉल अपवाद को देखते हुए विस्तार संदेश है: "सर्वर एक मान्य HTTP प्रतिक्रिया के साथ प्रतिक्रिया करने में विफल रहा।" मैं उस वेब सर्वर को बदल नहीं सकता जिसे मैं मार रहा हूं। क्या इस पर ध्यान न दें और प्रतिक्रिया का उपयोग करें?

2 संपादित करें:

मैंने पाया है कि सर्वर एक पूर्ण शीर्षलेख वापस नहीं भेज रहा है क्या एक टूटी हुई शीर्षलेख लौटाए जाने पर भी प्रतिक्रिया की सामग्री का उपयोग करने का कोई तरीका है?

3 संपादित करें: मैंने आईपी एड्रेस को वास्तविक आईपी एड्रेस को संपादित किया है, जो मैं मार रहा हूं। कोई भी सहायताकाफी प्रशंसनीय होगी।


क्लाइंट में सेट किए गए आपके हेडर की जांच करें, दोनों कुंजी और हेडर के मान दोबारा सत्यापित करें। मेरे मामले में मैं "कुकी" के बजाय "सीएसआरएफ" का उपयोग कर रहा था


मैंने आपके कोड को अपने आईपी पते के साथ परीक्षण किया है I कोड में कोई त्रुटि नहीं है मैंने सिर्फ ResponseHandler को BasicResponseHandler को बदल दिया है।

इसे देखो

 HttpClient httpclient = new DefaultHttpClient();
    try 
    {
        HttpGet httpget = new HttpGet("http://www.MyServer.com/get_public_tbl.cgi?A=1");               
        BasicResponseHandler responseHandler = new BasicResponseHandler();//Here is the change
        String responseBody = httpclient.execute(httpget, responseHandler);
        System.out.println(responseBody);
    }
    catch (ClientProtocolException e)
    {
        e.printStackTrace();
    }
    catch (IOException e)
    {
        e.printStackTrace();
    } 
    finally 
    {
        httpclient.getConnectionManager().shutdown();
    }