我正在尝试从我在模拟器上运行的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但仍然没有运气。有什么建议吗?
答案 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进行验证),这也是一个常见问题,当模拟器上没有互联网时,请确保您的模拟器已连接。