2011-04-11 60 views
2

嘿所有, 我正在使用Pinboard API從我的Android應用程序添加帖子。每次我發送帶有所需證書和參數的GET請求時,我都會得到401未經授權的響應代碼。我嘗試了PHP代碼中的相同URL,並且該帖子沒有任何錯誤地被添加到Pinboard。 任何想法我哪裏錯了?
下面的代碼:401未經授權雖然使用Pinboard API在Android中添加帖子

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需要使用Android支持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 2011-04-12 12:30:35

相關問題