Din*_*rma 32 session android session-state http-headers
我正在android中建立一个登录应用程序,我正在点击一个url(用户名和密码),直到那部分它工作正常,但在那之后每当我点击一个url(一旦用户被认证),它什么都不返回(即错误消息,请先登录).但它在非常相似的iPhone应用程序和浏览器上工作正常.
我得到的地方是phpSessionId的错误(即会话被销毁以获得进一步的请求)如果我们希望我们的Android应用程序在服务器端保持身份验证,我们需要在第一次连接后获取该ID,然后将其发送到我们所有后续请求的标题.
但问题是,我无法从第一个连接的标头获取sessionId,并发送带有标头的进一步请求.
请给我一些代码或链接来正确完成任务.谢谢.
Din*_*rma 48
最后,我解决了Android中的会话处理问题.Android无法处理会话本身(简单的浏览器可以),因此我们必须明确处理它.我稍微更改了http连接的代码.建立连接时,在第一个Activity中创建DefaultHttpClient的实例 .
public static DefaultHttpClient httpClient;
Run Code Online (Sandbox Code Playgroud)
第一次连接时,我做了以下事情:
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
Run Code Online (Sandbox Code Playgroud)
现在对于所有进一步的连接我使用相同的httpClient 例如在下一个活动中:
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
Run Code Online (Sandbox Code Playgroud)
希望这也将帮助您解决Android中的会话问题.
| 归档时间: |
|
| 查看次数: |
31402 次 |
| 最近记录: |