http请求:
private static final int DEFAULT_TIMEOUT = 5000;
private static final String Accept = "application/json,text/html, */*; q=0.01";
private static final String Accept_Encoding = "deflate";
private static final String Accept_Language = "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3";
private static final String Connection = "keep-alive";
private static final String Content_Type = "application/x-www-form-urlencoded; charset=UTF-8";
private static final String User_Agent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36";
private static final String X_Requested_With= "XMLHttpRequest";
public static final String HTTP_GET_METHOD = "GET";
public static final String HTTP_POST_METHOD = "POST";
public static void send(String url, String param,Map<String,Object> maps,String type) {
Map<String,Object> resultMap=new HashMap<String, Object>();
PrintWriter out = null;
BufferedReader in = null;
String result = "";
try {
if(type.toUpperCase().equals("GET")){
url=url + "?" + param;
}
URL realUrl = new URL(url);
// 打开和URL之间的连接
URLConnection conns = realUrl.openConnection();
HttpURLConnection conn = (HttpURLConnection) conns;
//解决302请求直接重定向响应头信息中的location页面
conn.setInstanceFollowRedirects(false);
// 设置通用的请求属性
conn.setRequestProperty("Accept", Accept);
conn.setRequestProperty("Accept-Encoding", Accept_Encoding);
conn.setRequestProperty("Accept-Language", Accept_Language);
conn.setRequestProperty("Connection", Connection);
conn.setRequestProperty("Content-Type", Content_Type);
conn.setRequestProperty("User-Agent", User_Agent);
conn.setRequestProperty("X-Requested-With",X_Requested_With);
conn.setConnectTimeout(DEFAULT_TIMEOUT);
conn.setUseCaches(false);
if(type.toUpperCase().equals("POST")){
conn.setRequestMethod("POST");
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
// 获取URLConnection对象对应的输出流 conn.getOutputStream()会默认调用connection.connect() 所以不用写
out = new PrintWriter(conn.getOutputStream());
// 发送请求参数
out.print(param);
// flush输出流的缓冲
out.flush();
}else{
conn.setRequestMethod("GET");
// 建立实际的连接
conn.connect();
}
//判断请求状态码
int status= conn.getResponseCode();
//
if(status==302){
//如果会重定向,保存302重定向地址
}
// 获取所有响应头字段
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) {
result += line;
}
} catch (Exception e) {
loger.info("发送GET请求出现异常!" + e);
e.printStackTrace();
} // 使用finally块来关闭输入流
finally {
try {
if(out!=null){
out.close();
}
if(in!=null){
in.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
http请求获取图片文件等信息时,建立连接后的代码:
byte[] data = new byte[1024];
int len = 0;
FileOutputStream fileOutputStream = null;
InputStream inputStream = null;
inputStream = conn.getInputStream();
try {
HttpServletRequest request= ServletActionContext.getRequest();
fileOutputStream = new FileOutputStream(request.getSession().getServletContext().getRealPath("")+"\\images\\loginCode.jpg");
while ((len = inputStream.read(data)) != -1) {
fileOutputStream.write(data, 0, len);
}
return true;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}