2012-04-12 75 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