2010-04-08 5 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

+0

그런데 문제는 HTTPS가 아니라 다른 것입니다. 붙여 넣은 코드는 나를 위해 일합니다. – synic

+0

설명을 위해서 : javax.net.ssl.SSLSocketFactory와 다른 org.apache.http.conn.ssl.SSLSocketFactory를 사용하고있는 것처럼 보입니다. 그 맞습니까? – Dalbergia