通过HTTPSUrlConnection向GtHub API发送PUT和DELETE请求

时间:2017-10-27 23:38:19

标签: android github-api

我正在开发一个Android项目,该项目要求我编辑用户的GitHub信息,例如主演/取消星空的存储库以及关注/取消关注其他用户。这些应该通过PUT / DELETE请求来完成。我从我的GitHub帐户生成了一个个人访问令牌,但我还没有弄清楚如何让我的请求工作。我知道我的令牌很好,因为我能够通过POSTMAN发出请求并查看更改。根据API文档

,我传入的链接是https://api.github.com/user/following/(user-im-trying-to-follow)
    HttpsURLConnection connection = null;
    BufferedReader reader = null;
    try {


        URL url = new URL(link);

        connection = (HttpsURLConnection) url.openConnection();
        connection.setRequestMethod("PUT");
        connection.setDoOutput(true);
        String basicAuth = "Basic " +(Base64.encodeToString(ACCESS_TOKEN.getBytes(), Base64.NO_WRAP));
        connection.setRequestProperty("Authorization", basicAuth );

        connection.connect();


    } catch (ProtocolException e) {
        e.printStackTrace();
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }finally {
        if(connection!=null) {
            connection.disconnect();
        }
    }

我尝试更换" Basic"使用"令牌"因为这是POSTMAN标题所需的值,但它没有起作用。我做错了什么?

1 个答案:

答案 0 :(得分:0)

首先,double-check the scope associated with your token
它应该包含“user”(或至少是用户:关注)

其次,请查看此示例“How to Access Github Content with Basic OAuth Authentication in Java? HTTPClient Or URLConnection Method

您看到使用的网址是:

String newUrl = "https://" + token + ":x-oauth-basic@" + url;

这可能是另一种测试方法。