添加问题; jsessionid在Android中用于GET请求的HttpURLconnection

时间:2012-09-14 05:59:49

标签: android httpurlconnection jsessionid

在我的android应用程序的第一个屏幕中,用户进行身份验证,并使用会话ID回复servlet ... 在第二个屏幕中,用户再次调用servlet,其中会话ID添加在url中; jsession =“sessionid”以及参数...

但servlet没有得到会话ID,并且在没有身份验证的情况下作为新会话进行响应......

问题出在哪里?

我正在使用此代码进行连接

                    URL u = new URL(aurl[0]);
        url=aurl[0];
        publishProgress(""+20,"Connecting...");
        HttpURLConnection c = (HttpURLConnection) u.openConnection();
        publishProgress(""+40,"Connecting...");
        c.setRequestMethod("GET");
        c.setDoOutput(true);
        c.connect();

        publishProgress(""+45,"Connecting...");
        publishProgress(""+40,aurl[0]);
        int lenghtOfFile = c.getContentLength();
        System.out.println(lenghtOfFile+"lenghtOfFile");

        is = c.getInputStream();

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,找到了一个简单的解决方案。

//首先设置默认的cookie管理器。

CookieHandler.setDefault(new CookieManager(null,CookiePolicy.ACCEPT_ALL));

//以下所有后续URLConnections将使用相同的cookie管理器。

URLConnection connection = new URL(url).openConnection();

// ...

connection = new URL(url).openConnection();

// ...

connection = new URL(url).openConnection();

// ...

这是我发现的最简单的解决方案。我们需要设置默认的CookieManager。 Using java.net.URLConnection to fire and handle HTTP requests是一个很棒的博客。

由于

答案 1 :(得分:0)

在网址中添加jseesioid从未工作过.. 代码使用此解决方案

httpsessionmanagement

特别是这两个......

 // Gather all cookies on the first request.
URLConnection connection = new URL(url).openConnection();
List<String> cookies = connection.getHeaderFields().get("Set-Cookie");
// ...

// Then use the same cookies on all subsequent requests.
connection = new URL(url).openConnection();
for (String cookie : cookies) {
connection.addRequestProperty("Cookie", cookie.split(";", 2)[0]);
 }
 // ...