2

我想使用 HTTP GET 方法获取数据。但是反应是错误的

java.net.ProtocolException: Unexpected status line: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"

如何解决?

public  JSONArray GetPost_sport(String token, String sport_type){

    JSONArray jsonArray = null;

    try {
        URL url = new URL("http://o-two-sport.com/api/posts/?sport_type="+sport_type);

        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestProperty("Authorization","Token " +token);
        conn.setRequestProperty("Content-Type", "application/json");
        conn.setRequestProperty("Connection", "close");
        conn.connect();

        InputStream is = conn.getInputStream();
        BufferedReader streamReader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
        StringBuilder responseStrBuilder = new StringBuilder();

        String inputStr;
        while ((inputStr = streamReader.readLine()) != null)
            responseStrBuilder.append(inputStr);

        jsonArray = new JSONArray(responseStrBuilder.toString());

    } catch (IOException | JSONException e) {
        e.printStackTrace();
    }

    return jsonArray;
}

主要问题不在此代码中。它实际上与环形振荡器相关。在环形振荡器中,有零延迟的组合循环,它导致了这个问题

4

1 回答 1

0

您正在检索一个普通的 HTML 页面作为响应,它不是 JSON - 准备好。查找此站点的 API 以检索 JSON 内容类型。

我想你应该添加format=json到你的网址:

new URL("http://o-two-sport.com/api/posts/?format=json&sport_type="+sport_type);
于 2017-04-12T06:19:39.837 回答