package com.linkstec.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class HttpRequestTask {
/**
* 向指定URL发送GET方法的请求
*
* @param url
* 发送请求的URL
* @param param
* 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @return URL 所代表远程资源的响应结果
*/
public static String sendGet(String url, String param) {
String result = "";
BufferedReader in = null;
try {
// + "?"
String urlNameString = url + "?" + param;
URL realUrl = new URL(urlNameString);
// 打开和URL之间的连接
URLConnection connection = realUrl.openConnection();
// 设置通用的请求属性
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// 建立实际的连接
connection.connect();
// 获取所有响应头字段
Map<String, List<String>> map = connection.getHeaderFields();
// 遍历所有的响应头字段
for (String key : map.keySet()) {
System.out.println(key + "--->" + map.get(key));
}
// 定义 BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("发送GET请求出现异常!" + e);
e.printStackTrace();
}
// 使用finally块来关闭输入流
finally {
try {
if (in != null) {
in.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
return result;
}
/**
* 向指定 URL 发送POST方法的请求
*
* @param url
* 发送请求的 URL
* @param param
* 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @return 所代表远程资源的响应结果
*/
public static String sendPost(String url1, String param){
String result = "";
String dataJson = "";
OutputStream out = null;
List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();
try {
URL url = new URL(url1);
String soapAction ="http://tempuri.org/";
HttpURLConnection con;
con = (HttpURLConnection) url.openConnection();
con.setDoOutput(true);
con.setDoInput(true);
con.setRequestMethod("POST");
con.setUseCaches(false);
con.setConnectTimeout(20000);
con.setReadTimeout(300000);
con.setRequestProperty("Content-type", "text/xml; charset=UTF-8");
con.setRequestProperty("SOAPAction", soapAction);
out = con.getOutputStream();
System.out.println("param====="+param);
con.getOutputStream().write(param.getBytes("utf-8"));
out.flush();
out.close();
int code = con.getResponseCode();
String tempString = null;
StringBuffer sb1 = new StringBuffer();
if (code == HttpURLConnection.HTTP_OK) {
BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));
while ((tempString = reader.readLine()) != null) {
sb1.append(tempString);
}
System.out.println(sb1);
if (null != reader) {
reader.close();
}
} else {
BufferedReader reader = new BufferedReader(new InputStreamReader(con.getErrorStream(), "UTF-8"));
// 一次读入一行,直到读入null为文件结束
while ((tempString = reader.readLine()) != null) {
sb1.append(tempString);
}
System.out.println(sb1);
if (null != reader) {
reader.close();
}
}
//响应报文
String respData=sb1.toString();
int startDataTag = respData.indexOf("<Data>");
int endDataTag = respData.indexOf("</Data>");
if(startDataTag!=-1&&endDataTag!=-1){
dataJson = respData.substring(respData.indexOf("<Data>")+6, respData.indexOf("</Data>"));
if(!"{Table1:[]}".equals(dataJson)){
JSONObject jsonObject = JSONObject.fromObject(dataJson);
if (jsonObject.has("Table1")) {
JSONArray transitListArray = jsonObject.getJSONArray("Table1");
for (int i = 0; i < transitListArray.size(); i++) {
Map<String,Object> innerMap = new HashMap<String,Object>();
JSONObject obj = JSONObject.fromObject(transitListArray.get(i));
@SuppressWarnings("rawtypes")
Iterator it = obj.entrySet().iterator();
while(it.hasNext()){
@SuppressWarnings("rawtypes")
Entry entry = (Entry) it.next();
innerMap.put(entry.getKey()+"",entry.getValue());
}
dataList.add(innerMap);
}
}
}
}else{
dataJson = respData;
}
System.out.println("结束");
} catch (Exception e) {
System.out.println("发送 POST 请求出现异常!"+e);
e.printStackTrace();
}
//使用finally块来关闭输出流、输入流
finally{
try{
if(out!=null){
out.close();
}
}
catch(IOException ex){
ex.printStackTrace();
}
}
return result;
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class HttpRequestTask {
/**
* 向指定URL发送GET方法的请求
*
* @param url
* 发送请求的URL
* @param param
* 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @return URL 所代表远程资源的响应结果
*/
public static String sendGet(String url, String param) {
String result = "";
BufferedReader in = null;
try {
// + "?"
String urlNameString = url + "?" + param;
URL realUrl = new URL(urlNameString);
// 打开和URL之间的连接
URLConnection connection = realUrl.openConnection();
// 设置通用的请求属性
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// 建立实际的连接
connection.connect();
// 获取所有响应头字段
Map<String, List<String>> map = connection.getHeaderFields();
// 遍历所有的响应头字段
for (String key : map.keySet()) {
System.out.println(key + "--->" + map.get(key));
}
// 定义 BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("发送GET请求出现异常!" + e);
e.printStackTrace();
}
// 使用finally块来关闭输入流
finally {
try {
if (in != null) {
in.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
return result;
}
/**
* 向指定 URL 发送POST方法的请求
*
* @param url
* 发送请求的 URL
* @param param
* 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @return 所代表远程资源的响应结果
*/
public static String sendPost(String url1, String param){
String result = "";
String dataJson = "";
OutputStream out = null;
List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();
try {
URL url = new URL(url1);
String soapAction ="http://tempuri.org/";
HttpURLConnection con;
con = (HttpURLConnection) url.openConnection();
con.setDoOutput(true);
con.setDoInput(true);
con.setRequestMethod("POST");
con.setUseCaches(false);
con.setConnectTimeout(20000);
con.setReadTimeout(300000);
con.setRequestProperty("Content-type", "text/xml; charset=UTF-8");
con.setRequestProperty("SOAPAction", soapAction);
out = con.getOutputStream();
System.out.println("param====="+param);
con.getOutputStream().write(param.getBytes("utf-8"));
out.flush();
out.close();
int code = con.getResponseCode();
String tempString = null;
StringBuffer sb1 = new StringBuffer();
if (code == HttpURLConnection.HTTP_OK) {
BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));
while ((tempString = reader.readLine()) != null) {
sb1.append(tempString);
}
System.out.println(sb1);
if (null != reader) {
reader.close();
}
} else {
BufferedReader reader = new BufferedReader(new InputStreamReader(con.getErrorStream(), "UTF-8"));
// 一次读入一行,直到读入null为文件结束
while ((tempString = reader.readLine()) != null) {
sb1.append(tempString);
}
System.out.println(sb1);
if (null != reader) {
reader.close();
}
}
//响应报文
String respData=sb1.toString();
int startDataTag = respData.indexOf("<Data>");
int endDataTag = respData.indexOf("</Data>");
if(startDataTag!=-1&&endDataTag!=-1){
dataJson = respData.substring(respData.indexOf("<Data>")+6, respData.indexOf("</Data>"));
if(!"{Table1:[]}".equals(dataJson)){
JSONObject jsonObject = JSONObject.fromObject(dataJson);
if (jsonObject.has("Table1")) {
JSONArray transitListArray = jsonObject.getJSONArray("Table1");
for (int i = 0; i < transitListArray.size(); i++) {
Map<String,Object> innerMap = new HashMap<String,Object>();
JSONObject obj = JSONObject.fromObject(transitListArray.get(i));
@SuppressWarnings("rawtypes")
Iterator it = obj.entrySet().iterator();
while(it.hasNext()){
@SuppressWarnings("rawtypes")
Entry entry = (Entry) it.next();
innerMap.put(entry.getKey()+"",entry.getValue());
}
dataList.add(innerMap);
}
}
}
}else{
dataJson = respData;
}
System.out.println("结束");
} catch (Exception e) {
System.out.println("发送 POST 请求出现异常!"+e);
e.printStackTrace();
}
//使用finally块来关闭输出流、输入流
finally{
try{
if(out!=null){
out.close();
}
}
catch(IOException ex){
ex.printStackTrace();
}
}
return result;
}
}