代码请求与使用php(phpMyAdmin)运行的服务器的HTTP连接。 它使用JSONObject进行响应。
当我在亚洲进行测试时,它起了作用,但它在美国给出了不同的回应。
给定网址:
target = "http://example.com/request.php?value=DDPS"
这适用于网络浏览器,但在Android设备中,它提供:
<html><body><script type="text/javascript" src="/cupid.js"></script><script>
.....path=/";location.href="http://example.com/request.php?value=DDPS
&ckattempt=1";</script></body></html>
这无法创建明显的JSONObject。
这种行为可能会出现什么问题?
我已经设置了允许来自各大洲访问的服务器的权限。
这是我的httpURLconnection代码:
try{
URL url = new URL(target);
HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
httpURLConnection.setInstanceFollowRedirects(true);
InputStream inputstream = httpURLConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputstream));
String temp;
StringBuilder stringBuilder = new StringBuilder();
while((temp = bufferedReader.readLine()) != null)
{
stringBuilder.append(temp).append("\n");
}
bufferedReader.close();
inputstream.close();
httpURLConnection.disconnect();
return stringBuilder.toString().trim();
}catch (Exception e) {
e.printStackTrace();
}
编辑:
HttpURLConnection.setFollowRedirects(true);
给出相同的行为。
这是我的PHP代码,用于从数据库获取数据并以JSON格式发送响应。 我应该在哪个点实现file_get_contents?
<?php
header("Content-Type: text/html; charset=UTF-8");
$con = mysqli_connect("localhost", "exampleID", "examplePW", "exampleID");
$value = $_GET["title"];
$result = mysqli_query($con, "SELECT * FROM DB WHERE title = '$value'");
$response = array();
while($row = mysqli_fetch_array($result)){
array_push($response, array("item1"=>$row[1], "item2"=>$row[2], "item3"=>$row[3], "item4"=>$row[4]));
}
echo json_encode(array("response"=>$response), JSON_UNESCAPED_UNICODE);
mysqli_close($con);
?>
答案 0 :(得分:0)
可能与服务器重定向有关。 Android获得第一个响应。你可以使用php scropt和file_get_contents方法验证它
您也可以尝试
HttpURLConnection.setFollowRedirects(true);
答案 1 :(得分:0)
解决。
Android代码中没有问题 问题来自我连接的服务器。
它阻止了一些未知的IP地址,所以我需要授权服务器接受某些IP访问。