package com.webservice.test;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.databind.ObjectMapper;
public class HttpTest {
public static final String POST_URL = "http://10.0.1.127:8080/jqscm/rest/diamond/queryAll/";
public static final String GET_URL = "http://10.0.1.127:8080/jqscm/rest/diamond/queryByCerNum/";
public static final ObjectMapper MAPPER = new ObjectMapper();
public static void main(String[] args) {
httpURLConnectionGET();
httpURLConnectionPOST();
}
/**
* 接口调用GET请求方式
*/
private static void httpURLConnectionGET() {
BufferedReader in = null;
StringBuffer sb = new StringBuffer();
try {
String param = "cerNumber=10083890";
String urlParamString = GET_URL + "?" + param;
URL realUrl = new URL(urlParamString);
// 打开和URL之间的连接
HttpURLConnection conn = (HttpURLConnection) realUrl.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)");
// 建立实际连接
conn.connect();
// 获取所有响应头字段
Map<String, List<String>> map = conn.getHeaderFields();
// 遍历所有的响应头字段
for (String key : map.keySet()) {
System.out.println(key + "-->" + map.get(key));
}
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
sb.append(line);
}
} catch (Exception e) {
System.out.println("发送GET请求出现异常" + e);
e.printStackTrace();
} finally {// 使用finally块来关闭输入流
try {
if (in != null) {
in.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println(sb);
}
/**
* 接口调用 POST请求方式
*/
@SuppressWarnings({ "static-access" })
private static void httpURLConnectionPOST() {
try {
URL url = new URL(POST_URL);
// 调用URL的openConnection方法,返回URLConnection类型连接
URLConnection urlConnection = url.openConnection();
// 将URLConnection类型连接强转为HttpURLConnection类型连接
HttpURLConnection conn = (HttpURLConnection) urlConnection;// 此时conn为一个待连接对象
// 设置连接输出流为true,默认为FALSE,(POST请求是以流的形式隐式的传递参数)
conn.setDoOutput(true);
// 设置连接输入流为TRUE
conn.setDoInput(true);
// 设置请求方式为POST
conn.setRequestMethod("POST");
// 设置post请求缓存为FALSE
conn.setUseCaches(false);
// 设置该HttpURLConnection实例是否自动执行重定向
conn.setFollowRedirects(true);
// 设置请求头里面的各个属性
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
// 建立连接(请求未开始,直到conn.getInputStream()方法调用时才发起,以上各个参数设置需在此方法之前进行)
conn.connect();
// 创建输入输出流,用于向连接里面输出携带的参数
DataOutputStream out = new DataOutputStream(conn.getOutputStream());
Map<String, String> map = new HashMap<String, String>();
map.put("cerNumber", "10083890");
String params = MAPPER.writeValueAsString(map);
// 将参数输出到连接
out.writeBytes(params);
// 输出完成后刷新并关闭流
out.flush();
out.close();// 切记
System.out.println(conn.getResponseCode());
// 连接发送请求,处理服务器响应(从连接获取到输入流并包装为bufferedReader)
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
StringBuffer sb = new StringBuffer();// 用来存储响应数据
// 循环读取流
while ((line = br.readLine()) != null) {
sb.append(line);
}
// 关闭流
br.close();
// 销毁连接
conn.disconnect();
System.out.println(sb.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}