http连接到php服务器给出了不同的响应(url适用于Web浏览器)

时间:2017-08-26 01:16:33

标签: php android json mysqli httpurlconnection

代码请求与使用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);
?>

2 个答案:

答案 0 :(得分:0)

可能与服务器重定向有关。 Android获得第一个响应。你可以使用php scropt和file_get_contents方法验证它

您也可以尝试

HttpURLConnection.setFollowRedirects(true);

答案 1 :(得分:0)

解决。

Android代码中没有问题 问题来自我连接的服务器。

它阻止了一些未知的IP地址,所以我需要授权服务器接受某些IP访问。