在android中发出HTTP / 1.1 GET请求

时间:2017-09-27 21:20:15

标签: java android json api

我正在尝试从API请求数据.API的要求如下:

  

我们的API的基本网址是https://api.openload.co/1(请注意1   /)背后的版本1

     

对API的所有请求都应为HTTP / 1.1 GET

     

请确保仅使用https的API。

     

大多数请求都需要API登录& API密钥,您可以在中找到   用户面板位于"用户设置"标签。响应是json,结构是   如下:

{    "status": <status-code>,

    "msg": "<informational message. might vary, use the status code in your code!>",

    "result": <result of the request. varies depending on the request>
}

我使用以下方法获取json响应:

private static String makeHttpRequest(URL url) throws IOException {
    String jsonResponse = "";

    // If the URL is null, then return early.
    if (url == null) {
        return jsonResponse;
    }

    HttpsURLConnection urlConnection = null;
    InputStream inputStream = null;
    try {

        urlConnection = (HttpsURLConnection) url.openConnection();
        urlConnection.setReadTimeout(10000 /* milliseconds */);
        urlConnection.setConnectTimeout(15000 /* milliseconds */);
        urlConnection.setRequestMethod("GET");
        urlConnection.connect()

        // If the request was successful (response code 200),
        // then read the input stream and parse the response.
        if (urlConnection.getResponseCode() == 200) {
            inputStream = urlConnection.getInputStream();
            jsonResponse = readFromStream(inputStream);
        } else {
            Log.e(LOG_TAG, "Error response code: " + urlConnection.getResponseCode());
        }
    } catch (IOException e) {
        Log.e(LOG_TAG, "Problem retrieving the earthquake JSON results.", e);
    } finally {
        if (urlConnection != null) {
            urlConnection.disconnect();
        }
        if (inputStream != null) {
            // Closing the input stream could throw an IOException, which is why
            // the makeHttpRequest(URL url) method signature specifies than an IOException
            // could be thrown.
            inputStream.close();
        }
    }
    return jsonResponse;
}

但是我收到了响应代码403。 我使用下面的网址来测试它: https://api.openload.co/1/account/info?login= {登录}&安培;关键= {}键

从chrome请求时,响应是以文件的形式获得的。因为我期待json响应字符串并且服务器返回包含json的文件会导致问题吗?

有人可以指出我做错了什么,好像我在Chrome中使用相同的网址我得到了json响应,但似乎无法通过代码获得响应

1 个答案:

答案 0 :(得分:0)

403的响应意味着您要么提交了不正确的凭据,要么提交了无效的凭据。所以,似乎有两个明显的地方可能会导致你的问题。

首先,您是否正确地将登录名和密钥设置为替换点的URL?

其次,您确定自己是有效且有效的登录名和密钥吗?