HttpURLConnection发送标头授权

时间:2017-04-07 10:07:31

标签: java android http restful-authentication auth0

我正在努力使用HttpURLConnection成功发送带有授权标头的GET请求。返回错误代码400。

我使用OKHttpClient成功但请求不使用任何依赖项。

这是我的代码:

public static String GETReqUserProfiles() throws IOException {

    URL url = new URL(UrlString);
    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

    urlConnection.setDoOutput(true);
    urlConnection.setRequestMethod("GET");
    urlConnection.setRequestProperty("Content-Type", "application/" + "json");
    urlConnection.setRequestProperty("authorization", "Bearer " + MANAGEMENT_TOKEN);

    urlConnection.connect();

    if (urlConnection.getResponseCode() != 200) {
        throw new RuntimeException("Failed : HTTP error code : "
                + urlConnection.getResponseCode());
    }

    String assembledOutput = "";

    BufferedReader responseBuffer = new BufferedReader(new InputStreamReader(
            (urlConnection.getInputStream())));

    String output;
    System.out.println("Output from Server:\n");
    while ((output = responseBuffer.readLine()) != null) {
        System.out.println(output);
        assembledOutput = assembledOutput + output;
    }

    urlConnection.disconnect();

    return assembledOutput;
}

修改

一切正常 -

问题在于:

urlConnection.setDoOutput(true);

setDoOutput(true):声明发送带有请求的正文。 GET请求不需要正文,因此可以将其设置为false或注释掉。相反,它用于POST,PATCH,PUT等......(需要正文的请求)。

另请注意:

urlConnection.setRequestMethod("GET");

如果发送GET请求,则不需要特别声明(尽管我在代码中留下了可读性)

我怀疑如果你包含setDoOutput(true)并且没有指定请求方法,该方法将默认为POST请求。

1 个答案:

答案 0 :(得分:0)

我为此开发了一个库,您可以使用它。

https://github.com/kksingla/fetchjson

如果您不想使用依赖

,可以在此处查看代码