无法将setRequestProperty键设置为“授权”,但任何其他键值都可以使用

时间:2017-07-05 22:58:06

标签: java

我试图通过为Twitter编写一个快速简单的oauth2连接来快速浏览Java,但是当我尝试使用setRequestProperty来请求头文件时,我遇到了这种非常奇怪的行为。

例如,如果我运行以下代码来添加名为“Authorization”的请求标头:

connection.setRequestProperty("Authorization", b64Keys);

我的请求标题将按原样打印,并且“Authorization”标题将丢失:

  

{grant_type = [client_credentials]   内容类型= [应用/ X WWW的窗体-urlencoded;字符集= UTF-8]}

但是如果我将密钥的名称更改为“Authorizations”或“test”(或其他任何东西),则setRequestPropert函数实际上会添加标头。这样做会产生以下输出:

  

{授权= [基本   WVE0UzNJcmVKUEMYSECRETBASE64CODE2MxWkRNcnNiMg ==]   grant_type = [client_credentials]   内容类型= [应用/ X WWW的窗体-urlencoded;字符集= UTF-8]}

以下是完整的方法:

    public String createRequest() throws IOException {
        String tokenBaseURL = "https://api.twitter.com/oauth2/token",publicKey= "",privateKey = "";
        String charset = "UTF-8";
        privateKey = "PRIVATEKEY";
        publicKey = "PUBLICKEY";

        String keyString = publicKey + ":" + privateKey;
        String b64Keys = "Basic "+Base64.getEncoder().encodeToString(keyString.getBytes());
        System.out.println(b64Keys);

        URL url = new URL(tokenBaseURL);
        HttpsURLConnection connection = (HttpsURLConnection)url.openConnection();


        connection.setRequestMethod("POST");
        connection.setRequestProperty("Authorization", b64Keys);
        connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
        connection.setRequestProperty("grant_type","client_credentials");
        System.out.println(connection.getRequestProperties().toString());

        connection.setDoOutput(true); // Triggers xsPOST.

        return connection.getContent().toString();

    }

我有什么遗漏或者这可能是一个错误吗?我需要能够添加一个名为“Authorization”的密钥的请求标头

0 个答案:

没有答案