通过Java客户端访问Web时,session信息的保存问题。
通过浏览器访问Web,浏览器自动管理Http连接的的session信息,如果通过Java连接,比如HttpURLConnection,就需要程序自己管理session。
我们希望java客户端能像浏览器一样,每次请求都维持一个session。
具体做法时这样:
客户端代码:
import
java.io.InputStreamReader;
import
java.io.PrintWriter;
import
java.net.HttpURLConnection;
import
java.net.URL;
public
class Client {
public
static
void
main(String[] args) throws
IOException {
URL url =
new
URL(
"http://localhost:8080/lbs_server/print_session.jsp");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET"
);
conn.setDoOutput(true
);
//第二次运行的时候,把上次读取的session的值设置上
conn.setRequestProperty(
"Cookie",
"JSESSIONID=320C57C083E7F678ED14B8974732225E");
PrintWriter out = new
PrintWriter(conn.getOutputStream());
String str = "url = "
+ url;
System.out
.println(""
);
out.println(str);
out.flush();
BufferedReader in = null
;
in = new
BufferedReader(new
InputStreamReader(conn.getInputStream()));
String destStr = ""
;
String inputLin = ""
;
while
((inputLin = in.readLine()) != null
){
destStr += inputLin;
}
System.out
.println(destStr);
//第一次运行的时候,记录下来session的值
String session_value = conn.getHeaderField("Set-Cookie"
);
String[] sessionId = session_value.split(";");
System.out.println(sessionId[0]);
System.out
.println("Session Value = "
+ session_value);
}
}
由于只是测试代码,只是示例一下。
第一次连接的时候获取session信息,取出sessionId[0]。再次连接的时候,将session信息设置为sessionId[0],就可以了。
再服务器端的代码时这样:
print_session.jsp
<
body>
<%
System.out.println(session.getId());
if
(session.getAttribute("first_time"
) == null
)
session.setAttribute("first_time"
,System.currentTimeMillis());
System.out.println("first_time:"
+ (Long)(session.getAttribute("first_time"
)) );
%>
</
body>
这样再服务器端看到的session信息和session数据都在。
比如两次连接服务器端得到的结果都是:
320C57C083E7F678ED14B8974732225E
first_time:1311899387880
320C57C083E7F678ED14B8974732225E
first_time:1311899387880
相关推荐
Java 实现 客户端 HttpURLConnection 用于进行web服务器测试的http客户端
彻底解决android开发中,使用用HttpUrlConnection与web服务器之间session保持问题
import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.List; import java.util.Map; public class HttpTest { private HttpURLConnection hc = ...
java实现多次HttpURLConnection共享session,发送两次请求共享同一个session,这样做爬虫的时候就可以爬网站登录后能看到的内容了
主要介绍了JAVA通过HttpURLConnection 上传和下载文件的方法,非常具有实用价值,需要的朋友可以参考下
本例演示最简单的android客户端和服务器端通信,客户端使用android4.0以上版本,服务器端为dynamic web project工程,使用时将client代码中的ip地址改为自己电脑的ipv4地址,同时保证手机和电脑处于同一网络下(内网...
远程连接服务器HttpURLConnection,该工具有上传到远程服务器的方法,供参考远程连接服务器HttpURLConnection,该工具有上传到远程服务器的方法,供参考
Java自带的HttpURLConnection访问接口文件上传, 含普通参数值传递和文件传递
主要介绍了java后台调用HttpURLConnection类模拟浏览器请求实例,该实例可用于接口调用,具有一定的实用价值,需要的朋友可以参考下
java HttpURLConnection示例 HttpURLConnection工具
Http完成客户端服务端交互 ...客户端用Android编译,HttpUrlConnection连接 通过json传输数据 部分电脑需要关闭防火墙 android真机和电脑连在同一网段,cmd——》ipconfig查找网段ip并在源码中修改 内附课程设计报告
用于对基于HTTP的服务进行抓取 HttpClient 现在是HttpComponents 把问题搞复杂了 其实Java内置的HttpURLConnection很好的 内含文档 使用方法见http: blog csdn net jdgdf566 article details 16357677
【Java】java.net.HttpURLConnection的使用
java网络请求工具类 HttpURLConnection post请求工具类HttpURLConnection httpURLConnection = (HttpURLConnection) url .openConnection(); httpURLConnection.setRequestMethod("POST");// 提交模式
首先客户端从服务器端获取json数据 1、利用HttpUrlConnection 代码如下:/** * 从指定的URL中获取数组 * @param urlPath * @return * @throws Exception */ public static String readParse(String urlPath) ...
用于对基于HTTP的服务进行抓取 HttpClient 现在是HttpComponents 把问题搞复杂了 其实Java内置的HttpURLConnection很好的 内含文档 使用方法见http://blog.csdn.net/jdgdf566/article/details/17039693
用于对基于HTTP的服务进行抓取 HttpClient 现在是HttpComponents 把问题搞复杂了 其实Java内置的HttpURLConnection很好的 内含文档 使用方法见http://blog.csdn.net/jdgdf566/article/details/17039693
使用HttpUrlConnection实现上传文件服务器端代码,引用commons-fileupload-1.2.1.jar、commons-io-1.4.jar
本人原创测试了百度,搜狗,360搜索都可以获取重定向后的真实地址,直接运行就可以,也可以根据自己项目具体修改功能。java使用HttpURLConnection获取百度搜狗360搜索链接重定向真实目标链接地址url。
httpurlconnection 获取服务器数据并解析