2010-04-08 87 views
31

我是在Android中實現HTTPS連接的新手。基本上,我試圖使用org.apache.http.client.HttpClient連接到服務器。我相信,在某些時候,我需要訪問應用程序的密鑰庫才能使用私鑰授權我的客戶端。但是,目前,我只是想連接並看看會發生什麼;我不斷收到HTTP/1.1 400錯誤請求錯誤。Android HttpClient和HTTPS

我似乎無法使頭或尾這儘管有許多例子(沒有人似乎爲我工作)。我的代碼看起來像這樣(BODY常量是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()); 

} 

所以,很簡單。如果有人有任何建議,請告訴我。謝謝!

回答

16

這應該讓你開始。我使用基本相同,除了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

感謝您的快速反應。我實際上早先嚐試了一種類似的方法,但沒有運氣相同的錯誤請求錯誤。 – harrisonlee 2010-04-09 00:34:30

+0

然後,問題不在於HTTPS,而是其他問題。我粘貼的代碼適合我。 – synic 2010-04-09 00:42:04

+0

僅供說明:它看起來像使用org.apache.http.conn.ssl.SSLSocketFactory,它與javax.net.ssl.SSLSocketFactory不同。那是對的嗎? – Dalbergia 2011-08-22 20:09:39