2011-05-20 24 views
5

當試圖從我的web服務讓我的Android客戶端上的某些數據與此代碼(在App引擎上運行)的Android的Restlet HTTPS

ClientResource cr = new ClientResource("https://myapp.appspot.com/restlet/service/"); 
IServiceResource res = cr.wrap(IServiceResource.class); 
m_Services = res.getServices(); 

我得到這個錯誤:

05-20 08:30:15.406: ERROR/AndroidRuntime(31767): Caused by: Communication Error (1001) - Could not change the mode after the initial handshake has begun. 

我有對於HTTPS的支持org.restlet.ext.ssl.jar和我使用這行添加客戶端

Engine.getInstance().getRegisteredClients().add(new HttpsClientHelper(null)); 

這是最接近我來https://電話工作,因爲我移動到restlet 2.1m4(移動,因爲我需要entityBuffering ..)

任何想法? 我需要分享的任何其他信息?

回答

3

得到它的工作。 將HttpClient更改爲org.restlet.ext.net。

在Android上,你被告知這樣做是爲了改變客戶端

Engine.getInstance().getRegisteredClients().add(new HttpClientHelper(null)); 

但是沒有這樣做改變,相反,我有成功與

Engine.getInstance().getRegisteredClients().clear(); 
Engine.getInstance().getRegisteredClients().add(new HttpClientHelper(null)); 

這解決了ISSU(是確保在構建路徑中有org.restlet.ext.ssl)。 這也解決了其他問題,例如「內部連接器錯誤(1002) - 調用線程在等待響應解除阻塞時超時。」

0

我曾與使用kso​​ap2的網絡服務,你可以嘗試使用kso​​ap2下載jar包括在你的項目。

+0

你的意思是使用kso​​ap2作爲restlet擴展? – 2011-05-20 10:48:59

+0

沒有它的另一種方式來使用網絡服務,你可以谷歌和找出信息abt ksoap2 – 2011-05-21 04:29:15

+0

有趣的是,但我的問題是關於restlet。 – 2011-05-22 12:48:43