2011-05-24 40 views
1

我被玩弄的Restlet了一下,到目前爲止,我喜歡它:)的Restlet客戶端:不能離開地面:(

我有一些麻煩一個的Restlet客戶端儘管如此,在Android模擬器上工作。

現在有一個非常簡單的Restlet服務器在JSE下運行。它所做的只是通過GET方法公開一個根資源(目前它只是一行文本)。我可以通過瀏覽器使用資源,並且還可以在控制檯中運行簡單的restlet客戶端。我已經修改了代碼,JSE客戶端來嘗試從Android模擬器連接,但我不能得到它的工作:

package mypackage; 

import android.app.Activity; 
import android.os.Bundle; 

import android.widget.TextView; 

import org.restlet.resource.ClientResource; 
import org.restlet.representation.Representation; 

public class MyActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    ClientResource res = new ClientResource("http://server-ip:8111/"); 
    Representation rep = res.get(); 

    TextView tv = new TextView(this); 
    try { 
     tv.setText(rep.getText()); 
    } catch (Exception ex) { 
     tv.setText("Exception: " + ex.getMessage()); 
    } 
    setContentView(tv); 

    } 

} 

注:

(1)內置的瀏覽器上android模擬器可以連接到Web服務並檢索文本。

(2)項目Manifest.xml文件已被修改爲啓用使用權限INTERNET。

(3)以下的客戶端使用內建Android的作品就好了捆綁在Apache HttpClient庫:

package mypackage; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 

import org.apache.http.client.ResponseHandler; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.impl.client.BasicResponseHandler; 
import org.apache.http.impl.client.DefaultHttpClient; 

public class TestActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 

     DefaultHttpClient client = new DefaultHttpClient(); 
     HttpGet get = new HttpGet("http://server-ip:8111/"); 
     ResponseHandler<String> handler = new BasicResponseHandler(); 

     TextView tv = new TextView(this); 

     try { 
      String content = client.execute(get, handler); 
      client.getConnectionManager().shutdown(); 
      setContentView(tv); 
      tv.setText(content); 
     } catch (Exception ex) { 
      tv.setText("Exception: " + ex.getMessage()); 
     } 

    } 

} 

任何想法我可能是做錯了?

在此先感謝,

邁克。

+0

「不工作」如何體現自己?它是否會拋出異常?回報一些東西,但不是你期望的? ... – Carsten 2011-05-24 23:38:13

+0

對不起,我以爲我把它放在原來的帖子。我相信HTTP請求會超時。有一個很長的延遲,然後在android模擬器上彈出消息框告訴我應用程序意外退出。我將嘗試使用Web調試器(Charles)來檢查請求的外觀,但我需要弄清楚如何在Eclipse中首先設置代理>:| – mdtsandman 2011-05-25 05:25:10

+0

你解決了這個問題嗎?一種解決方法是手動註冊org.restlet.ext.httpclient擴展來替換內部/默認HTTP客戶端。請參閱Restlet用戶指南: – 2011-09-15 08:38:31

回答

相關問題