我是restlet的新手,並試圖瞭解我應該使用哪種HTTPS客戶端選項。 Android的哪個HTTPS客戶端選項最健壯穩定? 我使用restlet 2.1rc4(和2.1.0)和android 2.2。不幸的是,更改android版本不適合我。其中restlet HTTPS客戶端使用android?
我認爲可能性是:
- 的Apache的HttpClient(org.restlet.ext.httpclient)
- .NET客戶端(org.restlet.ext.net)
- 的Restlet內部客戶
我用org.restlet.ext.net取得了一些成功,它大部分時間工作,但我得到各種例外與「通信錯誤(1001)與消息像」破管「,還有很多情況下立即從...返回一個狀態爲「null(-1)」的客戶端請求,而不向服務器發送請求。也許這是由我們正在使用的舊的android中的錯誤引起的,但我並不確定。
我試圖使用Apache客戶端,但無法獲取HTTPS,因爲它提供了這個異常:java.lang.IllegalStateException:Scheme'https'未註冊。相同的代碼在Windows上使用org.restlet.ext.net.jar的Jave SE版本,但是當我使用同一個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);
到目前爲止,答案似乎是restlet.ext.net客戶端,因爲其他兩個選擇根本不起作用。但ext.net客戶端經常失敗,我無法使用它。 – user1762069
我們找到了一種方法來(使)ext.net https客戶端在Android 2.2上工作。設置一個像這樣的系統屬性 - System.setProperty(「http.keepAlive」,「false」);我們不必在Android 4.0.3上執行此操作。我從來沒有得到Apache客戶端的工作,但並沒有太努力。 – user1762069