我正在尝试从我的 Android 应用程序中的 PHP 脚本请求 JSON 数据。
当我直接连接我的手机并直接访问“真正的”互联网网络服务器时,整个事情运行良好。但是,使用模拟器和本地主机(WAMP 安装)它根本不起作用。再次,直接在本地网络服务器上运行脚本,给了我预期的结果——只有当我使用模拟器在同一台机器上调用它时,麻烦就开始了。
以下是我迄今为止尝试过的组合(脚本位于根目录的子目录“zz”中):
private static String url_all_venues = "http://10.0.2.2/zz/pullvenuesjson.php";
或者
private static String url_all_venues = "http://10.0.2.2:80/zz/pullvenuesjson.php";
导致以下异常: E/JSON Parser(657): Error parsing data org.json.JSONException: Value
当我尝试以下操作时:
private static String url_all_venues = "http://10.0.2.2:8080/zz/pullvenuesjson.php";
代码“永远”运行,大约 5 分钟后出现超时错误。
知道如何解决这个问题,以便我也可以在本地网络服务器/模拟器上测试我的应用程序吗?很可能问题出在我的本地 Apache 配置中,但是,我不确定……</p>
编辑:
以下是一些似乎触发错误的代码:
DefaultHttpClient httpClient = new DefaultHttpClient();
String paramString = URLEncodedUtils.format(params, "utf-8");
url += "?" + paramString;
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
“url”就是上面提到的那个。正如我在下面的评论中提到的,问题似乎来自本地 WAMP 网络服务器没有正确响应,因为当我通过 Internet 直接访问“真实”服务器时,代码工作正常(iow,除了更改之外什么都不做php 脚本的 Internet 地址的 URL)。奇怪的是,当我在本地运行脚本时,该脚本也可以正常工作,但不能通过模拟器运行。