0

したがって、iamはこのサーバーから正常にログインしようとしています:www.liuserver.comとimは2つのクラスLoginLayout.javaとCustomHttpclient.javaを使用して、今私はHttpwatchを使用してサーバーとのブラウザー通信を監視して種類を追跡しましたサーバーが生成する応答と投稿(この例では31と1であり、それ以外の場合はゼロであるxとyの整数に加えて、ユーザーが提供するユーザー名とパスワードを含むurlを生成します)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を生成することに成功し、それらをサーバーに投稿していますが、もちろんそれは私に否定的な応答を与えます、今私は言われました、そして私が送る必要があることはhttpwatchプラグインのクッキータブで明らかですphpsessionidをCookieとして使用すると、これをどのように実行できるのか、パラメータを使用してCookieを送信するためのコードをどのクラスに配置する必要があるのか​​、検証が成功したときにサーバーからの応答の種類を追跡する方法について質問があります。ユーザー名とパスワードの。返信ストリームは次のようになります。

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

アップデート :

サーバーからphpsessionidcookieを取得することに成功し、その値を表示できるようになりました。次に、ログインパラメーターをサーバーに送信する必要があります。

response = CustomHttpClient.executeHttpPost("https://www.liuserver.com/login.php", postParameters);

しかし、phpsession idを含むCookieをこのメソッドexecutehttpPostのどこに配置する必要がありますか?メソッドのパラメーターを変更して、そこにCookieを渡すことはできますか?

4

2 に答える 2

1

クッキーを保存するには、次のようなものが必要です。

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);

また、リクエスト間でCookieを保持する場合は、リクエストごとに再利用する必要がありcookieStoreますctx

cookieStoreまた、あなたは中身を見るためにあなたを読むかもしれません:

List<Cookie> cookies = cookieStore.getCookies();
if( !cookies.isEmpty() ){
    for (Cookie cookie : cookies){
        String cookieString = cookie.getName() + " : " + cookie.getValue();
        Log.info(TAG, cookieString);
    }
}
于 2012-05-01T17:00:54.133 に答える
0

ヘッダーを直接操作する場合は、(POSTの場合と同様に)HTTP応答のヘッダーの一部としてCookieが渡されます。

しかし、他の投稿者が言うように、Cookieを(適切に)処理する方法は彼が投稿した例にあり、最初にどのように機能するかを学ぶのは苦痛かもしれませんが、最終的にはAPIを適切に使用するのに役立ちますその周り :-)

于 2012-05-03T08:09:08.240 に答える