3

サーバーで自分自身を認証する際に問題が発生しています。

Postman などの Google プラグインを介して手動で Cookie を設定しようとすると機能しますが、Android デバイスまたはエミュレーターを介して行うと機能しません。

その部分の私のコードは次のとおりです。

String url = "www.thisismyendpoint.com";
String ci_session = "ci_session=token";

CookieStore cookieStore = new BasicCookieStore();
BasicClientCookie stdCookie = new BasicClientCookie("Cookie",ci_session);
cookieStore.addCookie(stdCookie);
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();

localContext.setAttribute(ClientContext.COOKIE_STORE,
        cookieStore);
HttpPost httppost = new HttpPost(url);

HttpResponse response = httpClient.execute(httppost, localContext); 

これは、logcat での私の応答です。

02-19 16:43:47.149: D/response(27539): response: <div style="border:1px solid             #990000;padding-left:20px;margin:0 0 10px 0;">
02-19 16:43:47.149: D/response(27539): <h4>A PHP Error was encountered</h4>
02-19 16:43:47.149: D/response(27539): <p>Severity: Notice</p>
02-19 16:43:47.149: D/response(27539): <p>Message: Undefined index: ci_session</p>
02-19 16:43:47.149: D/response(27539): <p>Filename: controllers/test.php</p>
02-19 16:43:47.149: D/response(27539): <p>Line Number: 28</p>
02-19 16:43:47.149: D/response(27539): </div>

私は何か間違ったことをしていますか?ci_session をヘッダーにも設定しようとしましたが、同様に機能しませんでした。ご意見をお聞かせください。ありがとうございました!

4

2 に答える 2

2

Cookie が正しく設定されていますか?
私の場合、HttpGet を使用して手動で Cookie を設定します。

HttpGet httpGet = new HttpGet(url);
httpGet.addHeader("Cookie", cookie);

Cookie は sharedPreferences に保存されます。私が思うのと同じように HttpPost で動作するはずです。

于 2013-02-19T09:13:19.137 に答える
2

同様の問題に遭遇しました。DefaultHttpClient新しいリクエストごとに新しい を作成しないでください。代わりに、静的なシングルトンを使用して、すべての Http リクエストのニーズに使用してください。

于 2013-02-19T09:05:51.287 に答える