2012-09-14 53 views
0

在我的android應用程序中,第一個屏幕中的用戶身份驗證和servlet回覆帶有會話ID ... 第二個屏幕中用戶再次調用帶有會話ID的servlet在URL中所加入; jsession =「會話ID」與參數一起...添加問題; android中的HttpURLconnection中的jsessionid用於GET請求

但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(); 
+0

問題似乎是;在url JSESSIONID =的sessionid它顯示Filenotfound例外,因爲其在IS = c.getInputStream();如何解決此問題... –

+0

顯示您的網址以及如何添加jsession –

+0

http:// ip/servletname:jsessionid = sessionid?參數 –

回答

0

中從來沒有做過的URL添加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]); 
} 
// ... 
2

我面臨同樣的問題,並找到一個簡單的解決方案。

//首先設置默認的cookie管理器。

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

//以下所有後續URLConnections將使用相同的Cookie管理器。

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

// ...

連接=新的網址(URL).openConnection();

// ...

連接=新的網址(URL).openConnection();

// ...

這是我找到的最簡單的解決方案。我們需要設置默認的CookieManager。 Using java.net.URLConnection to fire and handle HTTP requests是偉大的博客。

由於