2011-04-11 65 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

相关问题