获取unicode会导致MailChimp oauth2令牌创建

时间:2016-08-23 12:45:54

标签: java oauth-2.0 mailchimp

我使用https://login.mailchimp.com/oauth2/authorize API生成了访问代码。但是当我尝试使用https://login.mailchimp.com/oauth2/token创建令牌时,我得到了这样的unicode结果。

  

(?M ???0F?UJ?N?NQ?%`??'   " ????? NB 20 F =和9 ????我' F 14]〜Ĵ* $ ??W¯¯??寄存器?? _ T1 - ????;? OC)

qryStr = {"client_secret":"**********","grant_type":"authorization_code","redirect_uri":"https%3A%2F%2Flocalhost%3A9443%2Fverifymailchimp.sas","client_id":"********","code":"*************"}

HttpURLConnection connection = null;
try
{
    URL reqURL = new URL("https://login.mailchimp.com/oauth2/token");

    connection = (HttpURLConnection) reqURL.openConnection();
    connection.setConnectTimeout(3000); // 3 seconds
    connection.setReadTimeout(5000); // 5 seconds
    connection.setUseCaches(false);
    connection.setRequestProperty("Accept-Charset", "UTF-8"); 
    connection.setRequestProperty("Accept", "application/json");
    connection.setRequestMethod("POST");
    connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); //No I18N
    connection.setRequestProperty("Content-Length", "" + Integer.toString(qryStr.getBytes().length)); //No I18N
    connection.setDoOutput(true);
    OutputStream os = null;
    try
    {
        os = connection.getOutputStream();
        os.write(qryStr.getBytes(CHARSET));
    }
    finally
    {
        try{os.close();}catch(Exception e){}
    }
    int resCode = connection.getResponseCode();
    boolean success = (resCode >= 200 && resCode < 300);


    InputStream is = success ? connection.getInputStream() : connection.getErrorStream();
    if (is == null)
    {
        return null;
    }

    String contentStr = null;
    try
    {
        InputStreamReader reader = new InputStreamReader(is, CHARSET);
        StringBuilder buffer = new StringBuilder();
        char[] bytes = new char[1024];
        int bytesRead;
        while ((bytesRead = reader.read(bytes, 0, bytes.length)) > 0)
        {
            buffer.append(bytes, 0, bytesRead);
        }
        contentStr = buffer.toString();//?M??   ?0F?UJ?N?NQ? %`??' "?????nb??f=?&9????i'f??]?~j*$??W??Reg??_T1-???;?oc
    }
    finally
    {
        try{is.close();}catch(Exception e){}
    }
}

有人可以告诉原因吗?

1 个答案:

答案 0 :(得分:1)

我找到了这个案子的原因。访问代码有效期为30秒。需要在到期前生成令牌。如果他们传达了正确的错误信息,我们就能够毫无困惑地解决问题:(