私はWebWiew
で構成されたアンドロイドアプリケーションを持っており、コードを使用して自動的にサイトにログインする必要があります。私はpostUrl()
を使って試してみましたが、うまくいくようですが、いくつかのサイトでのみです。ここで アンドロイドウェブビューでコード付きのPOSTデータを送信する方法
public class webviewActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WebView webview = new WebView(this);
setContentView(webview);
WebSettings webSettings = webview.getSettings();
webSettings.setJavaScriptEnabled(true);
webview.setWebViewClient(new WebViewClient());
String postData = "[email protected]&login_password=myPassword";
webview.postUrl("https://www.dropbox.com/login", EncodingUtils.getBytes(postData, "utf-8"));
}
}
これはdropbox.comため素晴らしい機能しますが、google.com、facebook.com、などのような他のサイトは、単にログインページをロードしたり、与えますエラー(google.comにはCookieを有効にする必要があるというエラーが表示されます)。
今私はちょうど手で投稿データを行っています。サイトのログインフォームを見て、名前/値フィールドを私のコードのpostDataに入れてください。 Googleのようなサイトでは、ログインフォームには多くの非表示フィールドがあり、私もpostDataにそれらを追加しています。
私が間違っていることを誰かに教えてもらえれば教えてください。私はこれについてかなり混乱しています。
こんにちはan00b。答えをありがとう!私は運がないとこれを試したと信じています。私はこの特定の問題に取り組んでいません、私は別のルートを行くことにしました。とにかく、私は本当に答えに感謝するので、私はあなたの投票をします。 – javajavajavajavajava
"BASE64"には文字セットがありません。これは(postDataによって)うまくいく可能性がありますが、失敗する可能性があります。適切な方法は、URLEncoder.encode(postData、 "UTF-8")で行うことができる、 "application/x-www-form-urlencoded"にエンコードすることです。 – raudi
raudiは "application/x-www-form-urlencoded"を使ってスニペットで答えをつけることができます – D4rWiNS