apache http客户端

问题描述:

好的...在我寻求在android中以编程方式浏览网页。我终于确信apache http api是要走的路。尽管如此,我需要一些帮助。我已经设法使用httppost登录,但是我希望能够在此之后继续。再次访问Facebook的例子,我登录Facebook,现在我想用这个登录会话让我们说发布状态,我该如何继续? 这是到目前为止的代码(需要清洗的东西,它主要是从各种来源复制)apache http客户端

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    DefaultHttpClient httpclient = new DefaultHttpClient(); 

    try { 
     HttpGet httpget = new HttpGet("https://www.facebook.com/"); 
     try{ 
     HttpResponse response = httpclient.execute(httpget); 
     HttpEntity entity = response.getEntity(); 

     // System.out.println("Login form get: " + response.getStatusLine()); 
// EntityUtils.consume(entity); 

     // System.out.println("Initial set of cookies:"); 
     List<Cookie> cookies = httpclient.getCookieStore().getCookies(); 
     if (cookies.isEmpty()) { 
      System.out.println("None"); 
     } else { 
      for (int i = 0; i < cookies.size(); i++) { 
       System.out.println("- " + cookies.get(i).toString()); 
      } 
     } 
     // https://www.facebook.com/login.php?login_attempt=1 
     HttpPost httpost = new HttpPost("https://www.facebook.com/login.php?login_attempt=1"); 

     List <NameValuePair> nvps = new ArrayList <NameValuePair>(); 
     nvps.add(new BasicNameValuePair("email", "****")); 
     nvps.add(new BasicNameValuePair("pass", "****")); 

     try { 
      httpost.setEntity(new UrlEncodedFormEntity(nvps)); 
     } catch (UnsupportedEncodingException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     try { 
      response = httpclient.execute(httpost); 
     } catch (ClientProtocolException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     entity = response.getEntity(); 
     Toast.makeText(getBaseContext(), "done",Toast.LENGTH_LONG); 
     System.out.println("Login form get: " + response.getStatusLine()); 
    // EntityUtils.consume(entity); 

     System.out.println("Post logon cookies:"); 
     cookies = httpclient.getCookieStore().getCookies(); 
     if (cookies.isEmpty()) { 
      System.out.println("None"); 
     } else { 
      for (int i = 0; i < cookies.size(); i++) { 
       System.out.println("- " + cookies.get(i).toString()); 
      } 
     } 

    }finally {} }catch (Exception e) { 
     // TODO: handle exception 
    }finally { 
     // When HttpClient instance is no longer needed, 
     // shut down the connection manager to ensure 
     // immediate deallocation of all system resources 
     httpclient.getConnectionManager().shutdown(); 
     Toast.makeText(getBaseContext(), "done",Toast.LENGTH_LONG); 
    } 

} 
    } 

请以你的电子邮件地址和密码的星星,这可以让你里面Facebook,我怎么从那里着手发布状态?

再次请不要告诉我有一个Facebook的API,我不想使用它,这里的关键是要学会使用Apache库

最好的方式开始将Wireshark的和查看发布状态时浏览器正在做什么。然后在HTTPClient中适应它。

在移动客户端中保持会话的最佳方式应该是使用OAuth,当您获得OAuth令牌时,您可以使用令牌来使用Facebook提供商的任何API。