Java通过http协议发送Get和Post请求
本文是基于Windows 10系统环境,利用MyEclipse构建一个java项目,并通过http协议发送Get和Post请求
- Windows 10
- MyEclipse
一、准备工作
(1) 下载需要用的工具jar包
commons-beanutils-1.9.3.jar
commons-collections-3.2.1.jar
commons-lang-2.6.jar
commons-logging-1.2.jar
ezmorph-1.0.6.jar
httpclient-4.5.2.jar
httpcore-4.4.10.jar
json-lib-2.4-jdk15.jar
二、Post请求方式
(1) 将数据封装为json格式,然后再发送
/**
*
*/
package com.inspur;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URI;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import net.sf.json.JSONObject;
/**
* ClassName: contect_flask
* Function: TODO ADD FUNCTION
* @author: xuzheng
* date: 2019-7-1 下午2:03:00
*/
public class contect_flask {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
JSONObject jsonObject1 = new JSONObject();
JSONObject jsonObject2 = new JSONObject();
jsonObject2.put("deviceID", "110");
jsonObject2.put("state", "0");
jsonObject2.put("channel", "channel");
jsonObject1.put("item", jsonObject2);
jsonObject1.put("requestCommand", "control");
String result = contect_flask.post(jsonObject1, "http://172.30.12.188:5003/test/hello");
System.out.println(result);
}
public static String post(JSONObject json, String url){
String result = "";
HttpPost post = new HttpPost(url);
try{
CloseableHttpClient httpClient = HttpClients.createDefault();
post.setHeader("Content-Type","application/json;charset=utf-8");
post.addHeader("Authorization", "Basic YWRtaW46");
StringEntity postingString = new StringEntity(json.toString(),"utf-8");
post.setEntity(postingString);
HttpResponse response = httpClient.execute(post);
InputStream in = response.getEntity().getContent();
BufferedReader br = new BufferedReader(new InputStreamReader(in, "utf-8"));
StringBuilder strber= new StringBuilder();
String line = null;
while((line = br.readLine())!=null){
strber.append(line+'\n');
}
br.close();
in.close();
result = strber.toString();
if(response.getStatusLine().getStatusCode()!=HttpStatus.SC_OK){
result = "服务器异常";
}
} catch (Exception e){
System.out.println("请求异常");
throw new RuntimeException(e);
} finally{
post.abort();
}
return result;
}
}
三、Get请求方式
(1) 无参数的Get请求方式
/**
*
*/
package com.inspur;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URI;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import net.sf.json.JSONObject;
/**
* ClassName: contect_flask
* Function: TODO ADD FUNCTION
* @author: xuzheng
* date: 2019-7-1 下午2:03:00
*/
public class contect_flask {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String result = contect_flask.get("http://172.30.12.188:5003/test/hello");
System.out.println(result);
}
public static String get(String url){
String result = "";
HttpGet get = new HttpGet(url);
try{
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpResponse response = httpClient.execute(get);
result = getHttpEntityContent(response);
if(response.getStatusLine().getStatusCode()!=HttpStatus.SC_OK){
result = "服务器异常";
}
} catch (Exception e){
System.out.println("请求异常");
throw new RuntimeException(e);
} finally{
get.abort();
}
return result;
}
public static String getHttpEntityContent(HttpResponse response) throws UnsupportedOperationException, IOException{
String result = "";
HttpEntity entity = response.getEntity();
if(entity != null){
InputStream in = entity.getContent();
BufferedReader br = new BufferedReader(new InputStreamReader(in, "utf-8"));
StringBuilder strber= new StringBuilder();
String line = null;
while((line = br.readLine())!=null){
strber.append(line+'\n');
}
br.close();
in.close();
result = strber.toString();
}
return result;
}
}
(2) 有参数的Get请求方式
/**
*
*/
package com.inspur;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URI;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import net.sf.json.JSONObject;
/**
* ClassName: contect_flask
* Function: TODO ADD FUNCTION
* @author: xuzheng
* date: 2019-7-1 下午2:03:00
*/
public class contect_flask {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Map<String, String> map = new HashMap<String, String>();
map.put("name", "root");
map.put("password", "123456");
String result = contect_flask.get(map, "http://172.30.12.188:5003/test/hello");
System.out.println(result);
}
public static String get(Map<String, String> paramMap, String url){
String result = "";
HttpGet get = new HttpGet(url);
try{
CloseableHttpClient httpClient = HttpClients.createDefault();
List<NameValuePair> params = setHttpParams(paramMap);
String param = URLEncodedUtils.format(params, "UTF-8");
get.setURI(URI.create(url + "?" + param));
HttpResponse response = httpClient.execute(get);
result = getHttpEntityContent(response);
if(response.getStatusLine().getStatusCode()!=HttpStatus.SC_OK){
result = "服务器异常";
}
} catch (Exception e){
System.out.println("请求异常");
throw new RuntimeException(e);
} finally{
get.abort();
}
return result;
}
public static List<NameValuePair> setHttpParams(Map<String, String> paramMap){
List<NameValuePair> params = new ArrayList<NameValuePair>();
Set<Map.Entry<String, String>> set = paramMap.entrySet();
for(Map.Entry<String, String> entry : set){
params.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
}
return params;
}
public static String getHttpEntityContent(HttpResponse response) throws UnsupportedOperationException, IOException{
String result = "";
HttpEntity entity = response.getEntity();
if(entity != null){
InputStream in = entity.getContent();
BufferedReader br = new BufferedReader(new InputStreamReader(in, "utf-8"));
StringBuilder strber= new StringBuilder();
String line = null;
while((line = br.readLine())!=null){
strber.append(line+'\n');
}
br.close();
in.close();
result = strber.toString();
}
return result;
}
}