有些接口在请求登录之后需要保持会话,所有请求中可以添加cookie,用来保持会话
public static Map<String, String> post(String requestUrl,String param,String sessionPara){
String sessionId;
Map<String, String> retMap = new HashMap<String, String>();
PrintWriter out = null;
//构建地址
BufferedReader in = null;
StringBuffer result = null;
try {
URL url = new URL(requestUrl);
//URL url = uri.toURL();
URLConnection conn = url.openConnection();
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
if(!"".equals(sessionPara)) {
conn.setRequestProperty("cookie", sessionPara);
}
conn.setDoOutput(true);
conn.setDoInput(true);
conn.connect();
result = new StringBuffer();
//1.获取URLConnection对象对应的输出流
out = new PrintWriter(conn.getOutputStream());
//2.中文有乱码的需要将PrintWriter改为如下
//out=new OutputStreamWriter(conn.getOutputStream(),"UTF-8")
// 发送请求参数
out.print(param);
// flush输出流的缓冲
out.flush();
//读取URL的相应
in = new BufferedReader(new InputStreamReader(conn.getInputStream(),"utf-8"));
String line;
while((line = in.readLine())!= null) {
result.append(line);
}
retMap.put("result",result.toString());
//会话保持
String cookieValue = conn.getHeaderField("set-cookie");
if(cookieValue!=null) {
System.out.println("jyzfy:"+cookieValue);
sessionId = cookieValue.substring(0, cookieValue.indexOf(";"));
}else{
sessionId ="";
}
retMap.put("sessionId", sessionId);
return retMap;
} catch (MalformedURLException e) {
e.printStackTrace();
sessionId ="";
} catch (IOException e) {
e.printStackTrace();
sessionId ="";
}finally{
try {
if(in!=null) {
in.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
▄█▀█●各位老铁,如果我的代码能够帮助到你,请给我一个赞吧!