【发布时间】:2011-09-16 12:37:18
【问题描述】:
我正在尝试开发一个应用程序,它将用户名、名字、姓氏密码从我的应用程序发送到服务器(网站)。 如果该用户不存在,则它注册该用户,如果存在则登录该用户。 所有这些都运行良好。问题是我想退出,因为需要设置 cookie。
如何设置我没有得到的 cookie。还是sharedpreference好?
下面是我的代码,
private boolean sendJsonToServer(String jsonStr) {
Log.d("sendJsonToServer", "called");
boolean isDataSend = false;
try {
HttpClient client = new DefaultHttpClient();
HttpPost request = new HttpPost(url);
List<NameValuePair> value = new ArrayList<NameValuePair>();
value.add(new BasicNameValuePair("Name", jsonStr));
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(value);
request.setEntity(entity);
HttpResponse res = client.execute(request);
HttpEntity httpEntity = res.getEntity();
String entityStr = convertStreamToString(httpEntity.getContent());
JSONObject resObject = new JSONObject(entityStr);
resObject.getString("result");
resObject.getString("token");
Log.e("entity", "" + entityStr + " " + resObject.getString("result")
+ " " + resObject.getString("token"));
Editor edit = prefUserDetails.edit();
edit.clear();
edit.putString(TOKEN, resObject.getString("token"));
edit.commit();
String token = prefUserDetails.getString("token", "");
Log.e("token from sharedPreference", token);
String[] status_String = res.getStatusLine().toString().trim()
.split(" ");
if (status_String[1].equals("200")) {
isDataSend = true;
Log.e("isSend", "ture");
}
} catch (Exception e) {
System.out.println("Exp=" + e);
}
return isDataSend;
}
我正在发送包含用户名的 jsonObject(jsonStr),将所有详细信息发送到我的服务器以进行注册。注册后它登录并且服务器给出响应,一个是结果,另一个是令牌。我想将该令牌存储到cookie中。
然后,如果我按下退出按钮,则应从 cookie 中删除令牌。 我在这里使用了上述函数中的共享偏好,但我希望使用 cookie。
请给我一个方法。 谢谢
【问题讨论】:
-
共享首选项不需要处理文件 I/O。
-
为了能够退出 - 用户必须已经设置了一个(会话)cookie,假设在用户登录时给出?但是您没有cookie,所以您无法退出?对吗?
-
假设您不控制服务器(网站) - 检查是否可以调用 url 以注销 - 如果幸运的话,它是一个带有“get”操作的简单 URL。在我看来,您有一个有效的会话 cookie(您使用的是 WebView 吗?),我理解,您的应用在浏览已登录的页面时确实让您保持登录状态。
-
我没有使用任何 webview。只是我的应用程序与服务器交互并从服务器获取数据
-
那么使用 HttpClient 呢?您告诉我们的越多,我们就越有可能为您提供答案。也许您可以使用一些代码更新您的帖子,如果您不想公开发布,请排除实际 URL。
标签: android cookies sharedpreferences