このサーバーからのログインを成功させようとしています:www.liuserver.com、LoginLayout.javaとCustomHttpclient.javaの2つのクラスを使用して、今度はサーバーとのブラウザ通信を監視しましたHttpwatchを使用して、サーバーが生成する応答の種類と、この例では31と1であるxとyの整数に加えて、ユーザーが提供するユーザー名とパスワードを含むurlを生成します。ちょうどゼロ)のWebページへの投稿は、次のようになります。AndroidログインWebアプリケーションへのアプリケーション
POST /login.php HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*
Referer: https://www.liuserver.com/login.php
Accept-Language: en-US
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: www.liuserver.com
Content-Length: 38
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: PHPSESSID=e3q4d78jkci3shhn8fq1tlf7i5
USER=20730312&PASS=Password44&x=32&y=1
は、今私は、パラメータを使用してURLを生成することに成功していると私は、サーバーにそれらを掲示していますが、もちろん、それは私にnegativを与えますeの返信、今私は言われている、それは私がクッキーとしてphpsessionidを送信する必要があるとhttpwatchプラグインのクッキーのタブで明らかであり、ここでどのようにすることができると私はどのクラスを配置する必要がありますパラメータでクッキーを送信するためのコード、およびユーザー名とパスワードの検証が成功した場合にサーバーからの応答の種類をどのように追跡することができますか。
HTTP/1.1 302 Found
Server: nginx/1.0.14
Date: Tue, 01 May 2012 15:57:06 GMT
Content-Type: text/html
Connection: keep-alive
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: student/
X-Powered-By: PleskLin
Content-Length: 0
ページにログインするには、完全なURLを:: 応答ストリームがどのように見えるhttps://www.liuserver.com/login.php
更新:
[OK]を私は、サーバーからphpsessionidクッキーを取得することに成功したと私はそれを見ることができますしています値を入力すると、エラーログにパラメータを入力してください。
response = CustomHttpClient.executeHttpPost("https://www.liuserver.com/login.php", postParameters);
ここで、このメソッドにphpsession idが含まれています。executehttpPostメソッドのパラメータを変更して、そこにCookieを渡すことはできますか?
CookieStore cookieStore = new BasicCookieStore();
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpContext ctx = new BasicHttpContext();
ctx.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
HttpGet get = new HttpGet("your URL here");
HttpResponse response = httpclient.execute(get,ctx);
そして、あなたが要求間のクッキーを保持したい場合、あなたはすべての要求のためにcookieStore
とctx
を再利用する必要があります:あなたはの線に沿って何かを必要とするクッキーを保存するには
返信いただきありがとうございます。ここで関連する質問があります。私はサーバーにhttpgetを作成したと言いますが、アプリケーションがクッキーを受信したことをどのように確認できますか?言い換えれば、サーバーからアプリケーションへの応答をどのように読み取ることができますか? – Jawad
クッキーの内容を読み取る方法を示すサンプルが追加されました – lenik
これは本当に役に立ちました。私は質問に記載されているコードに相当するパラメータと一緒にサーバーにクッキー、それは単なる文字列またはurlencoded値のペアのエンティティである必要がありますか? – Jawad