2017-09-16 1 views
0

트위터 (애플리케이션 전용)에서 인증 토큰을 얻으려고 시도했지만 코드는 거의 가이드 라인을 따르지만 503 서비스를 사용할 수없는 코드가 표시됩니다.503 트위터의 HTTP 응답 코드

 @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 코드 변형 모두 원활하게 작동했습니다.

관련 문제