2010-04-08 16 views
31

Ich bin neu bei der Implementierung von HTTPS-Verbindungen in Android. Im Wesentlichen versuche ich, eine Verbindung zu einem Server herzustellen, der den org.apache.http.client.HttpClient verwendet. Ich glaube, irgendwann muss ich auf den Keystore der Anwendung zugreifen, um meinen Client mit einem privaten Schlüssel zu autorisieren. Aber im Moment versuche ich nur, mich zu verbinden und zu sehen, was passiert. Ich bekomme immer einen HTTP/1.1 400 Bad Request Fehler.Android HttpClient und HTTPS

Ich kann nicht scheinen, Kopf oder Zahl davon trotz vieler Beispiele zu machen (keiner von ihnen scheint für mich zu arbeiten). Mein Code sieht so aus (die BODY-Konstante ist XmlRPC):

private void connect() throws IOException, URISyntaxException{ 

    HttpPost post  = new HttpPost(new URI(PROD_URL)); 
    HttpClient client = new DefaultHttpClient(); 

    post.setEntity(new StringEntity(BODY)); 
    HttpResponse result = client.execute(post); 

    Log.d("MainActivity", result.getStatusLine().toString()); 

} 

Also, ziemlich einfach. Lass es mich wissen, wenn jemand da draußen einen Rat hat. Vielen Dank!

Antwort

16

Dies sollte Ihnen den Anfang machen. Ich benutze grundsätzlich das gleiche, außer mit ThreadSafeClientConnManager.

SchemeRegistry schemeRegistry = new SchemeRegistry(); 
schemeRegistry.register(new Scheme("https", 
      SSLSocketFactory.getSocketFactory(), 443)); 

HttpParams params = new BasicHttpParams(); 

SingleClientConnManager mgr = new SingleClientConnManager(params, schemeRegistry); 

HttpClient client = new DefaultHttpClient(mgr, params); 
+2

Danke für Ihre schnelle Antwort. Ich habe früher eine ähnliche Herangehensweise ohne Glück versucht; Derselbe Fehler bei der fehlerhaften Anfrage. – harrisonlee

+0

Dann ist das Problem nicht mit HTTPS, es ist etwas anderes. Der Code, den ich eingefügt habe, funktioniert für mich. – synic

+0

Nur zur Klarstellung: Es sieht so aus, als ob Sie org.apache.http.conn.ssl.SSLSocketFactory verwenden, was nicht dasselbe ist wie javax.net.ssl.SSLSocketFactory. Ist das korrekt? – Dalbergia