प्रमाणपत्र त्रुटि के कारण मैं HTTPS प्रोटोकॉल के साथ छवियों को डाउनलोड करने में सक्षम नहीं हूं। यह कुछ हफ़्ते या उससे अधिक समय तक होता है, इससे पहले, मुझे कोई समस्या नहीं थी।

अगर मैं एचटीपी कॉमन्स अपाचे लाइब्रेरी का उपयोग करता हूं, तो त्रुटि "होस्टनाम प्रमाणपत्र मेल नहीं खाता" है और यदि मैं यूआरएल और यूआरएल कनेक्शन का उपयोग करता हूं तो अपवाद "प्रमाण पत्र सत्यापित नहीं किया गया था"।

मैं हताश हूं क्योंकि मुझे अपनी परियोजना को पूरा करने के लिए इसे पूरा करने की आवश्यकता है और मैंने जो भी परीक्षण किया है वह काम नहीं कर रहा है।

यह अपाचे पुस्तकालय के साथ कोड है:

HttpClient client = new DefaultHttpClient();

HttpGet get = new HttpGet(url);

try
{
    HttpResponse response = client.execute(get);
    if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK)
    {
        HttpEntity entity = response.getEntity();
        if (entity != null)
        {
            try
            {
                byte[] data = EntityUtils.toByteArray(entity);
                bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
                //bitmap = BitmapFactory.decodeStream(entity.getContent());
            } catch (IOException e)
            {
                e.printStackTrace();
                Log.e("FACEBOOKLIBRARY", "Error fetching image from this URL: " + url
                        + "because of the download is corrupted");
                bitmap = null;
            } finally
            {
                entity.consumeContent();
            }
        }
    }
    else
    {
        Log.e("FACEBOOKLIBRARY", "Error fetching image from this URL: " + url
                + " because of the error: " + response.getStatusLine().toString());
        bitmap = null;
    }
} catch (IOException e)
{
    e.printStackTrace();
    Log.e("FACEBOOKLIBRARY", "Error fetching image while connecting to this URL: " + url);
    bitmap = null;
}

return bitmap;

और यह यूआरएल कोड है:

try {
    URL u = new URL(url);
    URLConnection connection = u.openConnection();
    InputStream is = connection.getInputStream();
    BufferedInputStream bis = new BufferedInputStream(is);

    ByteArrayBuffer baf = new ByteArrayBuffer(50);
    int current = 0;
    while((current = bis.read()) != -1) {
        baf.append(current);
    }
    byte[] byteArray = baf.toByteArray();
    bitmap = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
} catch (MalformedURLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    bitmap = null;
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    bitmap = null;
}
1
Adrian 21 मई 2011, 18:27

1 उत्तर

सबसे बढ़िया उत्तर

मुझे अंततः एचटीपी क्लाइंट को होस्टनाम चेक को निष्क्रिय करना पड़ा:

HttpClient client = new DefaultHttpClient();

SSLSocketFactory sf = (SSLSocketFactory) client.getConnectionManager().getSchemeRegistry().getScheme("https").getSocketFactory();
sf.setHostnameVerifier(new AllowAllHostnameVerifier());
1
Adrian 13 जून 2011, 15:38