2012-04-12 34 views
1

我想從我在模擬器上運行的Android應用程序調用REST webservice。我可以從我的瀏覽器從Android模擬器調用REST Webservice

http://localhost:39064/AndroidServiceImpl.svc/submitexcerpt?excerpt=...and+the+pirate+fell+off+the+boat 

撥打服務我可以從我的仿真器

http://10.0.2.2:39064/AndroidServiceImpl.svc/submitexcerpt?excerpt=...and+the+pirate+fell+off+the+boat 

撥打服務但是當我運行這段代碼:

HttpClient httpclient = new DefaultHttpClient(); 
HttpResponse response1; 
response1 = httpclient.execute(new HttpGet("http://10.0.2.2:39064/AndroidServiceImpl.svc/submitexcerpt?excerpt=testingthisout")); 

我得到一個連接拒絕異常。我已將<user-permission android:name="android.permission.INTERNET"></user-permission>添加到我的Manifest文件中,並將ThreadPolicy設置爲LAX,但仍然沒有運氣。有什麼建議麼?

+0

來源未找到標籤不再來了,因爲我在一般的異常捕獲它,我是不是之前,它造成上來。我現在得到一個連接拒絕異常,我正在調查 – Lizzard 2012-04-12 20:30:26

回答

1

我得到了答案,而不是將 <user-permission android:name="android.permission.INTERNET"></user-permission>
我需要
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

所以只是一些要點上調用web服務:
*添加到Manifest.xml文件
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
*使用10.0.2.2而不是localhost作爲本地消費服務
* S等線程政策鬆懈(不推薦用於生產)或使用的AsyncTask
ThreadPolicy tp = ThreadPolicy.LAX; StrictMode.setThreadPolicy(tp);

+0

Lizzard,您可能希望單擊複選標記以回答您自己的問題題。免費代表! – NPike 2012-04-14 20:11:28

0

確認10.0.2.2是您的機器地址(運行ifconfig來驗證它),當模擬器上沒有互聯網時,這也是一個常見問題,因此請確保您的仿真器已連接。

+0

我已經驗證這與網址http://10.0.2.2:39064/AndroidServiceImpl.svc/submitexcerpt?excerpt=...and+the+pirate+fell+ off + the + boat我可以通過模擬器上的網絡瀏覽器訪問webservice – Lizzard 2012-04-12 20:31:09

+0

我還添加了ThreadPolicy.LAX以關閉嚴格模式以防止NetworkOnMainthreadexception – Lizzard 2012-04-12 20:58:19

相關問題