java如何进行http的get请求和post请求
1、首先先创建一个MyHttp类来作为Http请求的工具类

2、接下去写入http的get请求的静态方法
/**
* 发起Http的get请求
* @param property 请求头参数
* @url 请求的地址
* @return 响应内容[Map<String, List<String>>(响应头),String(响应体)]
*/
public static Object[] get(String url,LinkedHashMap<String, String> property) {
StringBuffer buffer=null;
Map<String, List<String>> headerFields = null;
try{
URL u=new URL(url);
HttpsURLConnection conn=(HttpsURLConnection)u.openConnection();
Set<String> keySet = property.keySet();
for (String key : keySet) {
conn.setRequestProperty(key, property.get(key));
}
//设置当前实例使用的SSLSoctetFactory
System.out.println("开始链接");
conn.connect();
System.out.println("链接成功");
//读取服务器返回的响应头
headerFields = conn.getHeaderFields();
//读取服务器端返回的内容
InputStream is=conn.getInputStream();
InputStreamReader isr=new InputStreamReader(is,"utf-8");
BufferedReader br=new BufferedReader(isr);
buffer=new StringBuffer();
String line=null;
while((line=br.readLine())!=null){
buffer.append(line);
}
}catch(Exception e){
e.printStackTrace();
}
Object[] response = {headerFields, buffer.toString()};
return response;
}

3、这里解释下这个静态方法的传入参数和返回结果的内容,url是包括请求参数的get请求链接,property参数是请求头的键值对,返回值包括两个内容,一个是请求头的键值对,一个是转为string的返回内容,这里我们一个Object数组来放置这两个返回值,用的时候自行强转即可

4、接着是http的post方法,参数多一个content,是post给服务器的数据
/**
* 发情http的post请求
* @param url 目标地址
* @param property 请求头参数
* @param content 请求内容
* @return 响应内容[Map<String, List<String>>(响应头),String(响应体)]return 返回内容 [请求头,内容]
*/
public static Object[] post(String url,LinkedHashMap<String, String> property,String content) {
StringBuffer buffer=null;
Map<String, List<String>> headerFields = null;
try{
URL u=new URL(url);
HttpsURLConnection conn=(HttpsURLConnection)u.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
conn.setRequestMethod("POST");
Set<String> keySet = property.keySet();
for (String key : keySet) {
conn.setRequestProperty(key, property.get(key));
}
//设置当前实例使用的SSLSoctetFactory
System.out.println("开始链接");
conn.connect();
DataOutputStream os = new DataOutputStream( conn.getOutputStream() );
os.writeBytes(content);
os.flush();
os.close();
System.out.println("链接成功");
//读取服务器返回的响应头
headerFields = conn.getHeaderFields();
//读取服务器端返回的内容
InputStream is=conn.getInputStream();
InputStreamReader isr=new InputStreamReader(is,"utf-8");
BufferedReader br=new BufferedReader(isr);
buffer=new StringBuffer();
String line=null;
while((line=br.readLine())!=null){
buffer.append(line);
}
}catch(Exception e){
e.printStackTrace();
}
Object[] response = {headerFields, buffer.toString()};
return response;
}

5、http的post请求主要就是多一个设置为post方法和输出post数据

6、接下去是完整的代码:
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.net.ssl.HttpsURLConnection;
public class MyHttp {
/**
* 发起Http的get请求
* @param property 请求头参数
* @url 请求的地址
* @return 响应内容[Map<String, List<String>>(响应头),String(响应体)]
*/
public static Object[] get(String url,LinkedHashMap<String, String> property) {
StringBuffer buffer=null;
Map<String, List<String>> headerFields = null;
try{
URL u=new URL(url);
HttpsURLConnection conn=(HttpsURLConnection)u.openConnection();
Set<String> keySet = property.keySet();
for (String key : keySet) {
conn.setRequestProperty(key, property.get(key));
}
//设置当前实例使用的SSLSoctetFactory
System.out.println("开始链接");
conn.connect();
System.out.println("链接成功");
//读取服务器返回的响应头
headerFields = conn.getHeaderFields();
//读取服务器端返回的内容
InputStream is=conn.getInputStream();
InputStreamReader isr=new InputStreamReader(is,"utf-8");
BufferedReader br=new BufferedReader(isr);
buffer=new StringBuffer();
String line=null;
while((line=br.readLine())!=null){
buffer.append(line);
}
}catch(Exception e){
e.printStackTrace();
}
Object[] response = {headerFields, buffer.toString()};
return response;
}
/**
* 发情http的post请求
* @param url 目标地址
* @param property 请求头参数
* @param content 请求内容
* @return 响应内容[Map<String, List<String>>(响应头),String(响应体)]return 返回内容 [请求头,内容]
*/
public static Object[] post(String url,LinkedHashMap<String, String> property,String content) {
StringBuffer buffer=null;
Map<String, List<String>> headerFields = null;
try{
URL u=new URL(url);
HttpsURLConnection conn=(HttpsURLConnection)u.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
conn.setRequestMethod("POST");
Set<String> keySet = property.keySet();
for (String key : keySet) {
conn.setRequestProperty(key, property.get(key));
}
//设置当前实例使用的SSLSoctetFactory
System.out.println("开始链接");
conn.connect();
DataOutputStream os = new DataOutputStream( conn.getOutputStream() );
os.writeBytes(content);
os.flush();
os.close();
System.out.println("链接成功");
//读取服务器返回的响应头
headerFields = conn.getHeaderFields();
//读取服务器端返回的内容
InputStream is=conn.getInputStream();
InputStreamReader isr=new InputStreamReader(is,"utf-8");
BufferedReader br=new BufferedReader(isr);
buffer=new StringBuffer();
String line=null;
while((line=br.readLine())!=null){
buffer.append(line);
}
}catch(Exception e){
e.printStackTrace();
}
Object[] response = {headerFields, buffer.toString()};
return response;
}
}
