私のアプリは HTTP POSTS を実行します。通常、アプリは動作しますが、Cookie に問題があります。私のコードは HttpClient 変数を介して Cookie を正常に取得しているように見えますが、POST の結果は、私のアプリ (クライアントとして) が何も記憶していないことを示しています。(PCでWebブラウザを使用すると、問題なく動作します.Cookieは私の名前を覚えています)また、アプリを再起動すると、Cookieは消えます(...しかし、最初のこと)
これは私のコードです:
static DefaultHttpClient httpclient;
static HttpPost httppost;
static CookieStore cookiestore;
new Thread(new Runnable() {
public void run() {
String URI_FOR_DOMAIN="http://chatbot.t.com/cgi-bin/elbot.cgi";
httppost = new HttpPost(URI_FOR_DOMAIN);
try {
HttpResponse resp = httpclient.execute(httppost);
} catch (IOException e) {
e.printStackTrace();
}
cookiestore = ((DefaultHttpClient) httpclient).getCookieStore();
List<Cookie> list = cookiestore.getCookies();
app.logy("COOKIE STORE 1: " + cookiestore.toString());
app.logy("COOKIE LIST 1: "+list.toString());
for (int i=0;i<list.size();i++) {
Cookie cookie = list.get(i);
app.logy("COOKIE "+i+": "+cookie.toString());
}
HttpContext context = new BasicHttpContext();
context.setAttribute( ClientContext.COOKIE_STORE, cookiestore);
httppost = new HttpPost(url);
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<>(2);
nameValuePairs.add(new BasicNameValuePair("ENTRY", userInput));
nameValuePairs.add(new BasicNameValuePair("IDENT", userIDENT));
nameValuePairs.add(new BasicNameValuePair("USERLOGID", userLOGID));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
app.logy("COOKIE STORE 2: "+cookiestore.toString());
app.logy("COOKIE CONTEXT: " + context.toString());
HttpResponse response = httpclient.execute(httppost, context);
cookiestore = ((DefaultHttpClient) httpclient).getCookieStore();
List<Cookie> list2 = cookiestore.getCookies();
app.logy("COOKIE STORE 2: " + cookiestore.toString());
app.logy("COOKIE LIST 2: "+list2.toString());
for (int i=0;i<list2.size();i++) {
Cookie cookie = list2.get(i);
app.logy("COOKIE2 i="+i+": "+cookie.toString());
}
HttpEntity entity = response.getEntity();
}
}
app.logy(sb.toString());
}
catch (IOException e) { e.printStackTrace(); }
catch (Exception e) { e.printStackTrace(); }
} catch (ClientProtocolException e) {
app.logy("HttpPOST (ClientProtocol) error: "+e);
} catch (IOException e) {
app.logy("HttpPOST (I/O) error: "+e);
}
}
}).start();
これは、上記のコードから Logcats に反映される値です。Cookie はあるようですが、HttpResponse response = httpclient.execute(httppost, context); です。それらを無視しているようです。
COOKIE STORE 2: [[version: 0][name: cookie_user_name][value: Albert][domain: elbot-e.artificial-solutions.com][path: /][expiry: Thu Oct 08 22:26:54 GMT+02:00 2015]]
COOKIE LIST 2: [[version: 0][name: cookie_user_name][value: Albert][domain: elbot-e.artificial-solutions.com][path: /][expiry: Thu Oct 08 22:26:54 GMT+02:00 2015]]
COOKIE2 i=0: [version: 0][name: cookie_user_name][value: Albert][domain: elbot-e.artificial-solutions.com][path: /][expiry: Thu Oct 08 22:26:54 GMT+02:00 2015]