2012-03-06 7 views
0

私の最初のAndroidアプリを開発する私は少し路面ブロックを打ったと思う。サーバー側のjavascriptのチェックが自動フォームベースのログインに失敗する

私のアプリは自動的にウェブサイトにログインし、いくつかの検索条件のためにサイトを照会し、結果を画面に表示するためのものです。私は特に私がサイトのオーバーヘッド(写真、広告など)のほとんどを取り除くのが好きなので、ブラウザを使いたくない。

HttpURLConnectionを使用したWebサイトへのフォームベースのログインの使用サーバーがログインを承認した時点で停止していますが、ブラウザのJavaScriptおよびCookie機能を確認してログインを停止します。サーバーは、「ねえ、ログインに感謝しますが、javascriptとCookieを有効にする必要があります。さようなら」と言っているような、きちんと作られたページが戻ってくるので、HTTPや接続エラーなどはありません。

関連するコード:私はオオヤマネコ(また、javascriptを持っていないのLinux用のコンソールベースのブラウザ)と同じサーバの動作をトリガすることができる午前

 InputStream myInputStream =null; 
     StringBuilder sb = new StringBuilder(); 

     // prepare login fields 
     sb.append("username=");  
     sb.append(username);   
     sb.append("&password="); 
     sb.append(password); 

     myurl = new URL(url); 
     HttpURLConnection conn = (HttpURLConnection) myurl.openConnection(); 
     conn.setDoOutput(true); 
     conn.setRequestMethod("POST"); 
     OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 

     // add the POST form fields to the request 
     wr.write(sb.toString()); 
     wr.flush(); 
     myInputStream = conn.getInputStream(); 
     wr.close(); 

私が使用できないと言って、同じページを提供します私のブラウザでjavascriptを有効にしていない限り、サイト。

私はちょうどサーバーをだまして、私はJavaScriptが可能であることを知らせるのが理想ですが、私の現在の方法でこれが可能かどうかはわかりません。

これで解決しない場合は、私の選択肢は何ですか? WebViewClientのようなものを使用する必要がありますか?私は、ブラウザのGUIは、HTMLからデータを抽出し、私のアプリでそれと何かを行うための単なる方法が必要ではないと述べた。

ありがとうございます!

+0

JSサポートの確認方法を確認できるようにリンクしてください。 –

+0

サイトでは、タイムベースのログインフォームが使用されています。主なURLがUnixのエポック(私は信じている1970年以来)秒を行くことを意味した後。試してみてください:http://www.qrz.com/li/1330595715 – captcha

答えて

0

ウェブサーバーがUser-agentヘッダーをチェックし、サポートされているブラウザのホワイトリストと比較している可能性があります。

conn.setRequestProperty(
    "User-agent", 
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11"); 
+0

本当に良い提案ですが、上記のユーザーエージェントとFireXをWinXP/32bit用に試してみたので、サイトはUser-agentをチェックする以外の何かを使用しているに違いありませんユーザーエージェントの文字列と両方は、同じ '申し訳ありませんが、javascriptの情報なしのページはありませんでした。 – captcha

関連する問題