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保留访问状态的更多相关文章

  1. Java 调用 Hbase API 访问接口实现方案

    HBase是一个分布式的.面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”.就像Bigtable利用了Google文件 ...

  2. Java 调用 groovy 脚本文件,groovy 访问 MongoDB

    groovy 访问 MongoDB 示例: shell.groovy package db import com.gmongo.GMongoClient import com.mongodb.Basi ...

  3. java面向对象--包及访问控制符

    多人开发同一个项目时,会出现类名称相同的情况.package就是为了避免类或接口名称重复而采用的一种措施.实际上包就是有一定层次结构的文件夹,*.class文件要保存当前类声明的和包对应的文件夹中. ...

  4. 深入Java虚拟机--判断对象存活状态

    程序计数器,虚拟机栈和本地方法栈 首先我们先来看下垃圾回收中不会管理到的内存区域,在Java虚拟机的运行时数据区我们可以看到,程序计数器,虚拟机栈,本地方法栈这三个地方是比较特别的.这个三个部分的特点 ...

  5. Rsession让Java调用R更简单

    Rsession让Java调用R更简单 R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒. ...

  6. 24、jQuery常用AJAX-API/Java调用MySQL / Oracle过程与函数

      1)掌握jQuery常用AJAX-API 2)掌握Java调用MySQL / Oracle过程与函数 一)jQuery常用AJAX-API 目的:简化客户端与服务端进行局部刷新的异步通讯 (1)取 ...

  7. Java调用第三方http接口的方式

    1. 概述 在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适.很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对方提供的接口或第三方接口(短信.天气等). 在J ...

  8. Java 调用Restful API接口的几种方式--HTTPS

    摘要:最近有一个需求,为客户提供一些Restful API 接口,QA使用postman进行测试,但是postman的测试接口与java调用的相似但并不相同,于是想自己写一个程序去测试Restful ...

  9. java实现利用httpclient访问接口

    HTTP协议时Internet上使用的很多也很重要的一个协议,越来越多的java应用程序需要通过HTTP协议来访问网络资源. HTTPClient提供的主要功能: 1.实现了所有HTTP的方法(GET ...

随机推荐

  1. mysql_use_result & mysql_store_result & MYSQLI_ASYNC

    博文一 : 在使用 mysql_query() 进行一次查询后,一般要用这两个函数之一来把结果存到一个 MYSQL_RES * 变量中. 两者的主要区别是,mysql_use_result() 的结果 ...

  2. jqury插件编写

    sae中短信验证码: ; (function($) { $(document).ready(function() { if (parent && parent.location.hre ...

  3. spring boot test中mockito的运用

    mock的意义 在微服务盛行的当下,开发过程中往往出现A应用中某功能的实现需要调用B应用的接口,无论使用RPC还是restful都需要B应用提供接口的实现整个开发工作才能继续进行.从而导致A应用的开发 ...

  4. 关于Unity层级面板的自动初始化

    Transform[],GameObject[]这些class类型,Unity会进行自动初始化. 但[ExecuteInEditMode]在编辑模式下执行的时候,会发现初始化其实也是有顺序的,并且在U ...

  5. 用EA生成实体层代码

    在个人版机房重构中.实体层的代码敲得有点儿烦了.不同的实体仅仅是命名不同.代码结构全然一样.遇到反复的事情,就该动动脑.想想办法了. 以下给大家介绍使用EA生成实体层的代码. 首先.建一个类,注意选择 ...

  6. jquery ajax 提交form表单 以及django后台接受

    HTML <form id="project_file_upload" enctype="multipart/form-data" > <di ...

  7. Unicode Table

    Unicode Table http://www.tamasoft.co.jp/en/general-info/unicode.html   00 01 02 03 04 05 06 07 08 09 ...

  8. wcf客户端终结点样本集合

    1. <bindings> <basicHttpBinding> <binding name="BasicHttpBinding_IUser" /&g ...

  9. linux 短信收发

    #include <termios.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h> ...

  10. Docker Swarm学习教程

    原创作品,转载请注明出处:点我 Swarm介绍 Swarm是Docker公司在2014年12月初发布的一套较为简单的工具,用来管理Docker集群,它将一群Docker宿主机变成一个单一的,虚拟的主机 ...