これが私のコードのスニペットです。 HTTPOSTを使用してWebサイトにログインしようとしています。 「400 Bad Request」が何度も表示されるさまざまな組み合わせを試しました。 NameValuePairの代わりにユーザー名/パスワードをヘッダーとして渡してみました。しかし同じ結果。何か足りないものはありますか?
HttpClient httpclient = new DefaultHttpClient();
HttpPost post = new HttpPost("https://identi.ca/main/login");
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("nickname", u));
nvps.add(new BasicNameValuePair("password", p));
nvps.add(new BasicNameValuePair("submit", "Login"));
post.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
HttpResponse response = httpclient.execute(post);
HttpEntity entity = response.getEntity();
Log.i("Login form POST result: ", response.getStatusLine().toString());
手伝ってくれてありがとう。
HTTPサービスは、無効/正しくない/不適切なものを送信したと見なすと、400応答を送信します。コードから、送信される実際の引数が何であるか、または(より重要なのは)サーバーが送信することを期待しているものを知る方法はありません。
これを診断するには、次のことを行う必要があります。
2つ目は次のようなものです。
この場合、追加のtoken
パラメータを指定する必要があるようです。
しかし、あなたは完全に間違ったアプローチを取っているのではないかと思います。 "identi.ca"サイトは、クライアント用にいくつかの 公開API があるStatusNetを使用します。私が見ることができる「ログイン」URLに話しかけることについての言及はありません。
そのログインページのソースを見ると、token
という非表示フィールドがあり、おそらくサーバーに戻る必要があります。最初にそのページのコンテンツを取得し、トークン値を抽出して、POST応答に含める必要があります。