2017-09-16 15 views
0

私はTwitterから認証トークンを取得しようとしています(アプリケーションのみ)、コードはほぼ完全にガイドラインに従いますが、503サービスを利用できないコードを取得します。503 TwitterのHTTPレスポンスコードOAUTH

 @Override 
    protected Boolean doInBackground(Void... params) { 
     String cred_enc = tw_cons_key + ":" + tw_priv_cons_key; 
     cred_enc = Base64.encodeToString(cred_enc.getBytes(), Base64.NO_WRAP); 

     Request request = new Request.Builder().url("https://api.twitter.com/oauth2/token") 
       .header("Authorization:", "Basic " + cred_enc) 
       .header("Content-Type:", "application/x-www-form-urlencoded;charset=UTF-8") 
       .post(RequestBody.create(MEDIA_TYPE_MARKDOWN, postBody)) 
       .build(); 
     client.newCall(request).enqueue(new Callback() { 
      @Override 
      public void onFailure(Call call, IOException e) { 
       e.printStackTrace(); 
      } 

      @Override 
      public void onResponse(Call call, Response response) throws IOException { 
       ResponseBody body = response.body(); 
       if (response.isSuccessful()) { 
        Headers headers = response.headers(); 

        //response check 
        for (int i = 0; i < headers.size(); i++) { 
         System.out.println("Headers: " + i + " " + headers.name(i) + " : " + headers.value(i)); 
        } 
        System.out.println(body.string()); 

        try { 
         JSONObject jsonObject = new JSONObject(body.string()); 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
       } else { 
        throw new IOException("Unexpected code" + response); 
       } 
       body.close(); 
      } 
     }); 
     return true; 
    } 

考えられる原因はありますか?

+0

NetBeansで実行されている同じコードが403 Forbiddenを返します。 – Bord81

+0

HttpUrlConnectionも403になりますが、カールが機能します! Javaで何が問題になっていますか? – Bord81

答えて

0

実際に生成されたHTTPリクエストを見つけるために、localhostに単純なサーバーを書く必要がありました。

問題はコロン:.header("Authorization:"で、ネットワークリクエストでAuthorization::になりました。

ヘッダーキーの値からコロンを削除した後、HttpUrlConnectionとOkHttpの両方のコードがシームレスに機能しました。