HttpClient与HttpUrlConnection 在java后端进行跨域请求,访问调用服务的时候用得比较多。都是基于http的请求,进行访问
一. HttpURLConnection简介
在JDK的java.net包中已经提供了访问HTTP协议的基本功能的类:HttpURLConnection。
HttpURLConnection是Java的标准类,它继承自URLConnection,可用于向指定网站发送GET请求、POST请求。它在URLConnection的基础上提供了如下便捷的方法:
int getResponseCode(); // 获取服务器的响应代码。
String getResponseMessage(); // 获取服务器的响应消息。
String getResponseMethod(); // 获取发送请求的方法。
void setRequestMethod(String method); // 设置发送请求的方法
下面是HttpURLConnection的GET请求与POST请求的演示
get请求
public static String doGet(String urlStr) {
try {
URL url=new URL(urlStr);
HttpURLConnection connection=(HttpURLConnection) url.openConnection();
//设置请求参数(过期时间,输入、输出流、访问方式),以流的形式进行连接
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setUseCaches(false);//设置缓存
connection.setConnectTimeout(20000);//设置超时时间 毫秒
connection.setInstanceFollowRedirects(true);//设否执行http重定向
//建立连接
connection.connect();
String msg="";
int code =connection.getResponseCode();
if(code==200) {
BufferedReader br=new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line=null;
while(((line=br.readLine())!=null)) {
msg+=line+"\n";
}
br.close();
}
//关闭链接
connection.disconnect();
//输出结果
System.out.println(msg);
return msg;
} catch (Exception e) {
// TODO: handle exception
return null;
}
}
post请求
public static String doPost(Map<String,String> params,String urlStr,String encode) {
if(encode==null) {
encode="utf-8";
}
try {
URL url=new URL(urlStr);
HttpURLConnection conn=(HttpURLConnection) url.openConnection();
co