現在、ログインフォームを使用してログインパラメータを取得し、HTTP POSTリクエストを使用してウェブサイトにログインしています。私はサーバーの種類がわからないので問題になる可能性があります。ログイン資格情報を取得すると、入力ストリームを文字列(すべてのhtml)に変換し、それをテキストビューに設定します。ここではログインがあります:Androidウェブサイトへのログイン - 常にログインページデータを返します
private void postLoginData() throws ClientProtocolException, IOException {
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("loginurl"); // Changed for question.
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("sid", "username"));
nameValuePairs.add(new BasicNameValuePair("pin", "pass"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
String finalres = inputStreamToString(response.getEntity().getContent()).toString();
tvStatus.setText(finalres);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
}
そして、ここでinputStreamToString(だ)
private StringBuilder inputStreamToString(InputStream is) throws IOException {
String line = "";
StringBuilder total = new StringBuilder();
// Wrap a BufferedReader around the InputStream
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
// Read response until the end
while ((line = rd.readLine()) != null) {
total.append(line);
}
// Return full string
return total;
}
問題は、それが常にちょうどログインページのHTMLを返すことです。ユーザーがサイトのログインに失敗すると、その旨を示す小さなメッセージが表示されます。間違った資格情報を追加しても、それは何も表示されません。同様に、正しいログインを追加すると、ログインページのHTMLだけが表示されます。
ログインした後でページの内容を取得する必要がありますか? HTTPステータスが200または401であるかどうかを確認します。認証するだけの場合は、データを取得する必要はありません。 –
HTTPステータスのチェックの点で正しい方向に向けることができますか?私はちょっとグーグルをしていて、私はそれを見つけることができません。 –
レスポンスを書き込みます.getStatusLine()。getStatusCode(); Logcatに。 – yorkw