2013-02-05 7 views
5

Attualmente sto cercando di caricare su Imgur utilizzando il loro attuale v3 API, ma continuo a ricevere l'errorecaricamento su Imgur v3 utilizzando Java https errori

error: javax.net.ssl.SSLException: hostname in certificate didn't match: api.imgur.com != imgur.com OR imgur.com

L'errore è abbastanza auto-explaintory così ho pensato che proverei ad usare http invece, ma ottengo il codice di errore 400 con imgur. Non sono sicuro se questo significa che sto provando a caricare è errato o se Imgur non ama le connessioni SSL.

Qui di seguito è il mio modulo di codice di connessione a Imgur:

public String Imgur (String imageDir, String clientID) { 
    //create needed strings 
    String address = "https://api.imgur.com/3/image"; 

    //Create HTTPClient and post 
    HttpClient client = new DefaultHttpClient(); 
    HttpPost post = new HttpPost(address); 

    //create base64 image 
    BufferedImage image = null; 
    File file = new File(imageDir); 

    try { 
     //read image 
     image = ImageIO.read(file); 
     ByteArrayOutputStream byteArray = new ByteArrayOutputStream(); 
     ImageIO.write(image, "png", byteArray); 
     byte[] byteImage = byteArray.toByteArray(); 
     String dataImage = new Base64().encodeAsString(byteImage); 

     //add header 
     post.addHeader("Authorization", "Client-ID" + clientID); 
     //add image 
     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); 
     nameValuePairs.add(new BasicNameValuePair("image", dataImage)); 
     post.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     //execute 
     HttpResponse response = client.execute(post); 

     //read response 
     BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 
     String all = null; 

     //loop through response 
     while (rd.readLine() != null) { 
      all = all + " : " + rd.readLine(); 
     } 

     return all; 

    } 
    catch (Exception e){ 
     return "error: " + e.toString(); 
    } 
} 

Spero che qualcuno possa aiutare sia trovare l'errore nel codice di cui sopra o spiegare come risolvere la questione HTTPS corrente, grazie.

+0

Hai mai trovato una risposta a questo? Ho davvero bisogno di capire come farlo, e neanche la creazione della mia SSLFactory ha funzionato. –

risposta

4

Sembra che il nome di dominio nel certificato non corrisponda al nome di dominio a cui si sta accedendo, quindi SSL non funziona come previsto. Puoi dire a HttpClient di ignorare il problema del certificato e stabilire la connessione. Vedi questo stackoverflow answer per i dettagli.

+0

Questo si è rivelato essere il problema, ma l'ho risolto utilizzando la risposta qui: http://stackoverflow.com/questions/3135679/android-httpclient-hostname-in-certificate-didnt-match-example-com-ex . Per ora mi asterrò la taglia, ma darò un upvot. –

Problemi correlati