2012-10-20 3 views
4

나는으로 Restlet에 새로 온 사람, 나는 안드로이드에 사용되어야하는 HTTPS 클라이언트 옵션 이해하려고 노력. Android에서 가장 강력하고 안정적인 HTTPS 클라이언트 옵션은 무엇입니까? 난으로 Restlet 2.1rc4 (그리고 2.1.0)을 사용하여, 2.2 안드로이드 있어요. 불행히도 안드로이드 버전을 변경하는 것은 나를위한 옵션이 아닙니다.안드로이드에서 사용할 HTTPS 클라이언트를 다시 묶으시겠습니까?

나는 가능성이 생각 :

  1. 아파치 HttpClient를 (org.restlet.ext.httpclient)
  2. .NET 클라이언트 (org.restlet.ext.net)
  3. 으로 Restlet 내부 클라이언트
내가 org.restlet.ext.net 일부 성공을 거두었습니다

, 그것은 대부분의 시간을 작동하지만 나는 깨진 파이프 "와 같은 메시지와 함께 통신 오류 (1001)"다양한 예외를 얻을 ", 그리고 또한 많은 경우 즉시 반환 서버에 요청을 보내지 않고 "null (-1)"상태의 클라이언트 요청 어쩌면 이것은 우리가 사용하고있는 오래된 안드로이드의 버그로 인한 것일 수도 있지만 실제로는 잘 모르겠습니다.

아파치 클라이언트를 사용하려고 시도했지만 HTTPS가이 예외를 제공하기 때문에 HTTPS가 작동하지 않습니다. java.lang.IllegalStateException : Scheme 'https'가 등록되지 않았습니다. 동일한 코드 org.restlet.ext.net.jar의 Jave SE 버전으로 윈도우에서 작동하지만이 파일을 같은 항아리의 안드로이드 버전을 사용하는 경우는 HTTPS가 등록되어 있지 않습니다 말한다. 나는 아파치 클라이언트가 안드로이드에서 HTTPS를 지원한다고 생각했지만 그것은 나를 위해 일하지 않는다.

는 또한 내부 클라이언트를했지만, 그 모든 중 하나에서 작동하지 않습니다. Android RESTLet SSL Null Pointer과 같은 1001 오류 문제가 발생합니다. 나는 restlet 2.1.0과 android 2.2로 이것을 시도했다.

context = new org.restlet.Context(); 
Engine.getInstance().getRegisteredConverters().add(new JacksonConverter()); 
Engine.getInstance().getRegisteredClients().add(new org.restlet.ext.httpclient.HttpClientHelper(null)); 
client = new org.restlet.Client(context, org.restlet.data.Protocol.HTTPS); 
context.setClientDispatcher(client); 
ClientResource resource = new ClientResource(context, url); 
resource.setEntityBuffering(true); 
PojoResult result = resource.post(new PojoRequest, PojoResult.class); 
+0

지금까지, 다른 두 가지 선택이 전혀 작동하지 않기 때문에 답이는 restlet.ext.net 클라이언트 보인다. 하지만 ext.net 클라이언트가 너무 자주 실패합니다. – user1762069

+0

우리는 (일종의) 안드로이드 2.2에서 ext.net https 클라이언트를 작동시키는 방법을 발견했습니다. 다음과 같은 시스템 속성 설정 - System.setProperty ("http.keepAlive", "false"); 우리는 안드로이드 4.0.3에서 이것을 할 필요가 없었습니다. 나는 아파치 클라이언트가 작동하는 것을 결코 얻지 못했지만 너무 열심히 시도하지는 않았다. – user1762069

답변

0

으로 Restlet 프레임 워크의 새로운 2.2 버전은 조직에서 (이전에 HttpURLConnection의 기반으로 내부 HTTP/HTTPS 클라이언트를 변경 :

내 소스 코드는이 (아파치 클라이언트를 사용하려는 시도를 보여주는)처럼 기본적으로 .restlet.ext.net 확장자). org.restlet.jar의 크기면에서보다 안정적이고 더 가볍습니다.