Java HttpURLConnection在Android 5.1和4.4上传递相同的参数时返回了不同的结果

Java HttpURLConnection在Android 5.1和4.4上传递相同的参数时返回了不同的结果,java,android,android-studio,Java,Android,Android Studio,上述代码在Android5.1和Android6.0上运行良好,并返回了我想要的正确结果。但是当我在安卓4.4上运行这些程序时,使用相同的参数,它返回了不同的结果。我已经尝试了好几次,并将调试器附加到该进程。我发现可以成功地建立连接,响应代码也为200。 我猜HttpURLConnection参数一定有问题,因此服务器返回了不同的结果。我设置参数的方式是否可以在Android 5.1和6.0上运行,但不能在4.4上运行?有人能告诉我哪里做错了吗?试试下面的代码: public static St

上述代码在Android5.1和Android6.0上运行良好,并返回了我想要的正确结果。但是当我在安卓4.4上运行这些程序时,使用相同的参数,它返回了不同的结果。我已经尝试了好几次,并将调试器附加到该进程。我发现可以成功地建立连接,响应代码也为200。 我猜HttpURLConnection参数一定有问题,因此服务器返回了不同的结果。我设置参数的方式是否可以在Android 5.1和6.0上运行,但不能在4.4上运行?有人能告诉我哪里做错了吗?

试试下面的代码:

public static String request(String httpUrl, String httpArg) {
    BufferedReader reader = null;
    String result = "";
    StringBuffer sbf = new StringBuffer();
    httpUrl = httpUrl + "?" + httpArg;
    try {
        URL url = new URL(httpUrl);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        conn.setRequestProperty("apikey", myAPpiKey);
        conn.connect();
        if (conn.getResponseCode() == 200) {
            InputStream is = conn.getInputStream();
            reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
            String strRead = null;
            while ((strRead = reader.readLine()) != null) {
                sbf.append(strRead);
                sbf.append("\r\n");
            }
            reader.close();
            result = sbf.toString();
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return result;
}
它对我有用。希望它能起作用

请尝试以下代码:

public static String request(String httpUrl, String httpArg) {
    BufferedReader reader = null;
    String result = "";
    StringBuffer sbf = new StringBuffer();
    httpUrl = httpUrl + "?" + httpArg;
    try {
        URL url = new URL(httpUrl);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        conn.setRequestProperty("apikey", myAPpiKey);
        conn.connect();
        if (conn.getResponseCode() == 200) {
            InputStream is = conn.getInputStream();
            reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
            String strRead = null;
            while ((strRead = reader.readLine()) != null) {
                sbf.append(strRead);
                sbf.append("\r\n");
            }
            reader.close();
            result = sbf.toString();
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return result;
}

它对我有用。希望它能起作用

试试看为什么?设置分块流模式只会影响输出到请求正文的内容,并且在获取请求方法时没有请求正文。为什么?设置分块流模式只会影响输出到请求正文的内容,并且在获取请求方法时没有请求正文。您看到了什么区别?@EJP它在5.1或6.0上返回我想要的信息。但是在4.4上,它返回“找不到任何信息”消息。@ZionQ:请尝试我的库谢谢兄弟。请尝试一下,并获得一些反馈。当我将httpArg编码为“UTF-8”时,问题得到了解决。我想知道为什么我不需要在5.1上这么做,Android是为我做的吗?
没有找到任何信息
。你是说那是一个不同的结果?信息量很大!你看到了什么不同?@EJP它返回我在5.1或6.0上想要的信息。但是在4.4上,它返回“找不到任何信息”消息。@ZionQ:请尝试我的库谢谢兄弟。请尝试一下,并获得一些反馈。当我将httpArg编码为“UTF-8”时,问题得到了解决。我想知道为什么我不需要在5.1上这么做,Android是为我做的吗?
没有找到任何信息
。你是说那是一个不同的结果?信息量很大!