2012-05-01 12 views
0

このサーバーからのログインを成功させようとしています: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); 

そして、あなたが要求間のクッキーを保持したい場合、あなたはすべての要求のためにcookieStorectxを再利用する必要があります:あなたはの線に沿って何かを必要とするクッキーを保存するには

答えて

1

また、あなたの中にあるもの見るためにあなたのcookieStoreを読むことがあります。

List<Cookie> cookies = cookieStore.getCookies(); 
if(!cookies.isEmpty()){ 
    for (Cookie cookie : cookies){ 
     String cookieString = cookie.getName() + " : " + cookie.getValue(); 
     Log.info(TAG, cookieString); 
    } 
} 
+0

返信いただきありがとうございます。ここで関連する質問があります。私はサーバーにhttpgetを作成したと言いますが、アプリケーションがクッキーを受信したことをどのように確認できますか?言い換えれば、サーバーからアプリケーションへの応答をどのように読み取ることができますか? – Jawad

+0

クッキーの内容を読み取る方法を示すサンプルが追加されました – lenik

+0

これは本当に役に立ちました。私は質問に記載されているコードに相当するパラメータと一緒にサーバーにクッキー、それは単なる文字列またはurlencoded値のペアのエンティティである必要がありますか? – Jawad

0

あなたが一緒にプレイしたい場合はあなたのクッキーが(ちょうどあなたのPOSTのように)HTTP応答のヘッダーの一部として渡されます直接ヘッダー。

しかし、他のポスターのように、クッキーを扱う方法(正しく)は、彼が投稿した例であり、最終的にAPIを適切に使用するのに役立ちます。

関連する問題