4

我是 restlet 的新手,并试图了解我应该与 android 一起使用哪个 HTTPS 客户端选项。哪个 HTTPS 客户端选项对 Android 来说最强大和最稳定?我正在使用restlet 2.1rc4(和2.1.0)和android 2.2。不幸的是,更改 android 版本对我来说不是一个选择。

我认为可能性是:

  1. Apache HttpClient (org.restlet.ext.httpclient)
  2. .net 客户端 (org.restlet.ext.net)
  3. Restlet 内部客户端

我在 org.restlet.ext.net 上取得了一些成功,它在大多数情况下都可以正常工作,但是我遇到了各种异常,出现“通信错误 (1001)”以及“断管”之类的消息,以及许多立即从状态为“null (-1)”的客户端请求,而从未向服务器发送请求。这可能是由我们正在使用的旧 android 中的错误引起的,但我不太确定。

我尝试使用 Apache 客户端,但根本无法让 HTTPS 工作,因为它给出了以下异常:java.lang.IllegalStateException: Scheme 'https' not registered。相同的代码可以在 Windows 上使用 Jave SE 版本的 org.restlet.ext.net.jar,但是当我使用同一个 jar 文件的 Android 版本时,它说 https 没有注册。我认为 Apache 客户端在 android 上支持 HTTPS,但它对我不起作用。

我也尝试了内部客户端,但这也根本不起作用。我得到与Android RESTLet SSL Null Pointer相同的 1001 错误问题。我用restlet 2.1.0和android 2.2试过这个。

我的源代码基本上是这样的(显示使用 Apache 客户端的尝试):

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);
4

1 回答 1

0

新的 2.2 版本的 Restlet Framework 更改了其内部基于 HttpURLConnection 的 HTTP/HTTPS 客户端(之前在 org.restlet.ext.net 扩展中)。就 org.restlet.jar 的大小而言,它更稳定、更轻。

于 2014-05-10T04:56:28.017 回答