2

我正在尝试从我在模拟器上运行的 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"));

我得到一个连接被拒绝的异常。我已将 ThreadPolicy 添加 <user-permission android:name="android.permission.INTERNET"></user-permission>到我的清单文件中,并将 ThreadPolicy 设置为 LAX,但仍然没有运气。有什么建议么?

4

2 回答 2

2

我得到了答案,而不是把 <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 用于本地使用的服务
*将线程策略设置为松弛(不推荐用于生产)或使用 AsyncTask
ThreadPolicy tp = ThreadPolicy.LAX; StrictMode.setThreadPolicy(tp);

于 2012-04-13T20:51:53.670 回答
0

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

于 2012-04-12T20:19:49.660 回答