0

わかりました...アンドロイドでプログラムによってウェブをサーフィンする私の探求において。私は最終的に、Apache http api が進むべき道であると確信しています。私はそれを使用するためにいくつかの助けが必要です。httppost を使用してログインできましたが、その後も続行できるようにしたいと考えています。Facebook の例をもう一度取り上げます。Facebook にログインします。今度は、このログイン セッションを使用してステータスを投稿したいと思います。どうすればよいですか? これはこれまでのコードです(クリーニングなどが必要です。ほとんどがさまざまなソースからコピーされたものです)

  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 ライブラリの使い方を学ぶことです。

4

2 に答える 2

1

開始する最良の方法は、wireshark を使用して、ステータスを投稿するときにブラウザーが何をしているかを確認することです。次に、HTTPClient でそれに適応します。

于 2012-06-01T01:59:59.993 に答える
0

モバイルクライアントでセッションを維持するための最良の方法は、OAuthを使用することです。OAuthトークンを取得すると、そのトークンを使用して、Facebookプロバイダーが提供する任意のAPIを使用できます。

于 2012-06-01T03:29:46.187 に答える