2011-04-11 5 views
2

안녕하세요, Android 애플리케이션에서 게시물을 추가하기 위해 Pinboard API를 사용하고 있습니다. 필요한 자격 증명과 인수를 사용하여 GET 요청을 보낼 때마다 401 Unauthorized 응답 코드가 표시됩니다. PHP 코드에서 동일한 URL을 시도했는데 오류없이 Pinboard에 게시물이 추가되었습니다. 어디서 잘못 생각하나요?401 Android에서 게시물 추가를 위해 Pinboard API를 사용하는 중에 권한이 없음

private void postToPinboard(){ 

    String url = "https://.muUsername:[email protected]/v1/posts/add?"; 
    HttpClient client = new DefaultHttpClient(); 
    HttpGet get = new HttpGet(url); 

    try { 
      // Adding my data 
      List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
      nameValuePairs.add(new BasicNameValuePair("description","Description data"); 
      nameValuePairs.add(new BasicNameValuePair("url", "http://somewebsite.com")); 

      String paramString = URLEncodedUtils.format(nameValuePairs, "utf-8"); 
      url +=paramString; 

      // Execute HTTP Post Request 
      HttpResponse response = client.execute(get); 

      Log.v("", "RESPONSE CODE: "+response.getStatusLine());// giving 401 Unauthorized 

     } catch (ClientProtocolException e) { 
      // do something 
     } catch (IOException e) { 
      // do domething 
     } 
     finish(); 
} 

답변

1

드디어 문제를 가지고 : 핀 보드 API를 사용하여 기본 인증을 HTTP 지원하기 위해 안드로이드를 필요로
여기에 코드입니다. 그래서 여기 내가이 일을하는 데 방법은 다음과 같습니다

private void postToPinboard(){ 

     String url ="https://api.pinboard.in/v1/posts/add?"; 

     DefaultHttpClient client = new DefaultHttpClient(); 

    String credentials = Base64.encodeBytes((username+":"+password).getBytes()); 

    if(credentials!=null){ 

     try { 

      List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 

      nameValuePairs.add(new BasicNameValuePair("description", "Description data"); 
      nameValuePairs.add(new BasicNameValuePair("url", "http://somewebsite.com")); 

      String paramString = URLEncodedUtils.format(nameValuePairs, "utf-8"); 

      url +=paramString; 

      HttpGet get = new HttpGet(url); 
      get.addHeader("Authorization","Basic "+credentials); 

      HttpResponse response = client.execute(get); 

       if(response.getStatusLine().getStatusCode() == 200){ 
        //  Added to pinboard 
       }else{ 
        //  Error adding to Pinboard 
       } 

     } catch (ClientProtocolException e) { 
      e.printStackTrace(); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
finish(); 

} 여기

+0

링크의 http://oo-androidnews.blogspot.com/2010/01/http-basic-authentication-on-android.html Android에서 HTTP 기본 인증 용 – Bangdel