2013-02-05 3 views
5

ich derzeit versuchen, ihre aktuelle API v3 hochladen Imgur verwenden, jedoch halte ich den Fehler bekommenHochladen auf Imgur v3 Java https Fehler mit

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

Der Fehler ist ziemlich selbst explaintory so dachte ich, ich würde versuchen, stattdessen http, aber ich bekomme den Fehlercode 400 mit imgur. Ich bin mir nicht sicher, ob das bedeutet, dass ich versuche, das Hochladen falsch zu machen oder wenn Imgur keine SSL-Verbindungen mag.

Unten finden Sie meinen Modul Code Imgur Anschluss:

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(); 
    } 
} 

Ich hoffe jemand in helfen kann entweder den Fehler in dem obigen Code zu finden oder zu erläutern, wie das aktuelle HTTPS Problem zu beheben, danke.

+0

Haben Sie jemals eine Antwort darauf gefunden? Ich muss wirklich herausfinden, wie das geht, und das Erstellen meiner eigenen SSLFactory hat auch nicht funktioniert. –

Antwort

4

Es sieht so aus, als ob der Domänenname im Zertifikat nicht mit dem Domänennamen übereinstimmt, auf den Sie zugreifen. Daher schlägt SSL wie erwartet fehl. Sie können HttpClient anweisen, das Zertifikatsproblem zu ignorieren und nur die Verbindung herzustellen. Siehe hierzu stackoverflow answer für Details.

+0

Dies stellte sich als das Problem heraus, aber ich löste es mit der Antwort hier: http://stackoverflow.com/questions/3135679/android-httpclient-hostname-in-certificate-didnt-match-example-com-ex . Ich werde das Kopfgeld für jetzt unterlassen, werde aber eine Aufwertung geben. –

Verwandte Themen