2012-03-31 6 views
0

現在、ログインフォームを使用してログインパラメータを取得し、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だけが表示されます。

+0

ログインした後でページの内容を取得する必要がありますか? HTTPステータスが200または401であるかどうかを確認します。認証するだけの場合は、データを取得する必要はありません。 –

+0

HTTPステータスのチェックの点で正しい方向に向けることができますか?私はちょっとグーグルをしていて、私はそれを見つけることができません。 –

+0

レスポンスを書き込みます.getStatusLine()。getStatusCode(); Logcatに。 – yorkw

答えて

2

HTTPステータスを確認します。このようなことをしてください

if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { 
    //Do Something here.. I'm logged in. 
} else if (response.getStatusLine().getStatusCode() == HttpStatus.SC_UNAUTHORIZED) { 
    // Do Something here. Access Denied. 
} else { 
    // IF BOTH CASES not found e.g (unknown host and etc.) 
} 

これは、ステータスを確認したいときに機能します。ありがとう

+0

常に最初の結果を返します。 –

+0

最初の状態になったら、あなたは正常にログインしたことを意味します。今、あなたはその認証で何をする必要がありますか? –

+0

問題は、誤ったログインを入力しても同じ結果が発生することです。 –

1

私は問題がthis questionに似ていると思います。それをチェックしてください。解決にはいくつかの解決策があります。

関連する問題