从Android模拟器调用REST Web服务

时间:2012-04-12 19:36:52

标签: java android web-services rest

我正在尝试从我在模拟器上运行的Android应用程序调用REST Web服务。我可以使用

从我的浏览器调用该服务
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但仍然没有运气。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

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

所以只需要一些关于呼叫网络服务的要点:
*添加到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用于本地消费的服务
*将线程策略设置为lax(不建议用于生产)或使用AsyncTask
ThreadPolicy tp = ThreadPolicy.LAX; StrictMode.setThreadPolicy(tp);

答案 1 :(得分:0)

验证10.0.2.2是您的计算机地址(运行ifconfig进行验证),这也是一个常见问题,当模拟器上没有互联网时,请确保您的模拟器已连接。