我正在android中构建一个登录应用程序,其中我点击一个url(带有用户名和密码),直到该部分它工作正常,但之后每当我点击一个url(一旦用户通过身份验证),它什么都不返回(即错误消息,例如请先登录)。然而,它在非常相似的 iPhone 应用程序和浏览器上运行良好。
我发现这是 phpSessionId 的错误(即会话被销毁以供进一步请求),如果我们希望我们的 Android 应用程序在服务器端保持身份验证,我们需要在第一次连接后获取该 id,然后将其发送到我们所有后续请求的标头。
但问题是我无法从第一个连接的标头获取 sessionId 并与标头一起发送进一步的请求。
请给我一些代码或链接以正确完成任务。
谢谢。
最后我解决了这个问题Android 中的会话处理。
Android 无法处理会话本身(简单的浏览器可以),因此我们必须显式处理它。
我稍微改变了http连接的代码。
创建了一个实例默认HttpClient在建立连接时的第一个活动中。
public static DefaultHttpClient httpClient;
第一次连接时,我做了以下操作:
URL url=new URL(urlToHit);
LoginScreen.httpClient = new DefaultHttpClient(); //LoginScreen is the name of the current Activity
HttpPost httppost = new HttpPost(url.toString());
HttpResponse response = LoginScreen.httpClient.execute(httppost);
xr.parse(new InputSource(url.openStream())); //SAX parsing
现在对于所有进一步的连接我使用相同的http客户端例如在下一个活动中:
URL url=new URL(urlToHit);
HttpPost httppost = new HttpPost(url.toString());
HttpResponse response = LoginScreen.httpClient.execute(httppost);
// Log.v("response code",""+response.getStatusLine().getStatusCode());
// Get hold of the response entity
HttpEntity entity = response.getEntity();
InputStream instream = null;
if (entity != null) {
instream = entity.getContent();
}
xr.parse(new InputSource(instream)); //SAX parsing
希望这也能帮助大家解决Android 中的会话问题.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)