Java调用http保留访问状态
package com.coracle; import com.coracle.yk.xframework.util.yunTongXun.HttpRequest; import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL; /**
* Created by huangbaidong
* 2017/4/12.
*/
public class TestHttpStatus { public static void main(String[] args) throws Exception {
try {
//1、先登录获取SessionId也就是cookie
String sessionId = login();
//2、然后调用其他接口,带上cookie,
String result = httpRequest("http://localhost:8083/xweb/api/v2/order/list", "{}", sessionId);
System.out.println(result);
} catch (IOException e) {
e.printStackTrace();
}
} /**
* 访问其他有权限控制的接口
* @param url 自己传URL
* @param json
* @param sessionId
* @return
* @throws Exception
*/
public static String httpRequest(String url, String json, String sessionId) throws Exception {
// 使用POST方式向目的服务器发送请求
URL connect;
OutputStreamWriter paramout = null;
BufferedReader reader = null; StringBuffer data = new StringBuffer();
try {
connect = new URL(url);
HttpURLConnection connection = (HttpURLConnection) connect.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "application/json");
connection.setRequestProperty("Cookie", sessionId);
System.out.println("newSession:"+sessionId);
paramout = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");
paramout.write(json);
paramout.flush(); reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
String line;
while ((line = reader.readLine()) != null) {
data.append(line);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (paramout != null) {
paramout.close();
}
if (reader != null) {
reader.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
return data.toString();
} /**
* 登录获取session
* @return
* @throws IOException
*/
public static String login() throws IOException {
URL url = new URL("http://localhost:8083/xweb/api/v2/login/userLogin?loginName=positec&password=qwe123");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "application/json");
PrintWriter out = new PrintWriter(conn.getOutputStream());
String str = "url = " + url;
out.println(str);
out.flush();
BufferedReader in = null;
in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
String destStr = "";
String inputLin = "";
while((inputLin = in.readLine()) != null ){
destStr += inputLin;
}
System.out.println(destStr);
String session_value = conn.getHeaderField("Set-Cookie");
String[] sessionId = session_value.split(";");//第一登录,取出SESSIONID
System.out.println("Session Value = " + session_value);
return sessionId[0];
}
}
Java调用http保留访问状态的更多相关文章
- Java 调用 Hbase API 访问接口实现方案
HBase是一个分布式的.面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”.就像Bigtable利用了Google文件 ...
- Java 调用 groovy 脚本文件,groovy 访问 MongoDB
groovy 访问 MongoDB 示例: shell.groovy package db import com.gmongo.GMongoClient import com.mongodb.Basi ...
- java面向对象--包及访问控制符
多人开发同一个项目时,会出现类名称相同的情况.package就是为了避免类或接口名称重复而采用的一种措施.实际上包就是有一定层次结构的文件夹,*.class文件要保存当前类声明的和包对应的文件夹中. ...
- 深入Java虚拟机--判断对象存活状态
程序计数器,虚拟机栈和本地方法栈 首先我们先来看下垃圾回收中不会管理到的内存区域,在Java虚拟机的运行时数据区我们可以看到,程序计数器,虚拟机栈,本地方法栈这三个地方是比较特别的.这个三个部分的特点 ...
- Rsession让Java调用R更简单
Rsession让Java调用R更简单 R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒. ...
- 24、jQuery常用AJAX-API/Java调用MySQL / Oracle过程与函数
1)掌握jQuery常用AJAX-API 2)掌握Java调用MySQL / Oracle过程与函数 一)jQuery常用AJAX-API 目的:简化客户端与服务端进行局部刷新的异步通讯 (1)取 ...
- Java调用第三方http接口的方式
1. 概述 在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适.很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对方提供的接口或第三方接口(短信.天气等). 在J ...
- Java 调用Restful API接口的几种方式--HTTPS
摘要:最近有一个需求,为客户提供一些Restful API 接口,QA使用postman进行测试,但是postman的测试接口与java调用的相似但并不相同,于是想自己写一个程序去测试Restful ...
- java实现利用httpclient访问接口
HTTP协议时Internet上使用的很多也很重要的一个协议,越来越多的java应用程序需要通过HTTP协议来访问网络资源. HTTPClient提供的主要功能: 1.实现了所有HTTP的方法(GET ...
随机推荐
- MySQL主从不一致情形与解决方法
参考:https://blog.csdn.net/hardworking0323/article/details/81046408 https://blog.csdn.net/lijingkuan/a ...
- unity, copy-paste component
然后到要粘贴的地方,点弹出下拉菜单,如图: 得到:
- HttpClient设置编码类型
笔者引用的是commons-httpclient这个jar包httpclient 可是通过get/post方式获取带有中文页面的html文件时.返回的是乱码,在网上找了非常久.最终找到一个合适的: H ...
- linux(二十一):apache服务配置(二)
1.普通用户进入家文件夹 紧接着之前的进度,我们想想博客的实现.每一个用户在登录之后.都是在自己的家文件夹.那么对于我们的要求就是要设置每一个用户的默认公布文件夹为其家文件夹. 接着我们就来实现 ...
- python-wechatAutoReword
python-微信自动回复功能,基于itchat 2017.9.6 实现群@自动回复 #! /usr/bin/env python3.5.2 # coding="utf-8" im ...
- 关于mysqli_free_result($result)报错
运行原来的一个原生的php写的项目,出现mysqli_free_result($result)的警告 Warning: mysqli_free_result() expects parameter 1 ...
- Ubuntu 11.04 下安装配置 JDK 7
第一步:下载jdk-7-linux-i586.tar.gz wget -c http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-i586 ...
- PHP——数组中的each(),list()和while循环遍历数组
.while遍历 在while()语句每次循环中,each()语句将当前数组元素的键,赋给list()函数的第一个参数变量$key.并将当前数组元素中的值,赋给list()函数中的第二个参数变量$va ...
- ajax——三级联动下拉列表框的优化(简化页面,用jquery插件代替原来页面代码,返回处理数据类型为"TEXT")
数据库: 主页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...
- 在Asp.net中为图像加入水印信息
using System.Drawing; using System.IO; using System.Drawing.Imaging; private void AddTextToImg(strin ...