关于HTTP调用接口的四种方式(post,get,delete,put)

300 阅读2分钟
package Utils;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.DeleteMethod;

public class smsUtils {
	//POST请求
	public static String httpURLConnectionPOST (String parm,String Url) {  
	    try {  
	        URL url = new URL(Url);
	        HttpURLConnection connection = (HttpURLConnection) url.openConnection();// 此时cnnection只是为一个连接对象,待连接中  
	        connection.setDoOutput(true);  // 设置连接输出流为true,默认false (post 请求是以流的方式隐式的传递参数)  
	        connection.setDoInput(true);  // 设置连接输入流为true 
	        connection.setRequestMethod("POST");  // 设置请求方式为post 
	        connection.setUseCaches(false);   // post请求缓存设为false  
	        connection.setInstanceFollowRedirects(true);   // 设置该HttpURLConnection实例是否自动执行重定向  
	        connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");     
	        connection.connect();  // 建立连接 
	        // 创建输入输出流,用于往连接里面输出携带的参数,(输出内容为?后面的内容)  
	        DataOutputStream dataout = new DataOutputStream(connection.getOutputStream());  
	        dataout.writeBytes(parm);  
	        // 输出完成后刷新并关闭流  
	        dataout.flush();  
	        dataout.close(); // 重要且易忽略步骤 (关闭流,切记!)   
	        // 连接发起请求,处理服务器响应  (从连接获取到输入流并包装为bufferedReader)  
	        BufferedReader bf = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8"));   
	        String line;  
	        StringBuilder sb = new StringBuilder(); // 用来存储响应数据  
	        // 循环读取流,若不到结尾处  
	        while ((line = bf.readLine()) != null) {  
	            sb.append(line).append(System.getProperty("line.separator"));  
	        }  
	        bf.close();  
	        connection.disconnect(); // 销毁连接  
	        return sb.toString();
	    } catch (Exception e) {  
	        e.printStackTrace();  
	    }
		return null;  
	}  
	
	//GET请求
	 public static String httpURLConectionGET(String URLParam) {  
	        try {  
	            URL url = new URL(URLParam);    // 把字符串转换为URL请求地址  
	            HttpURLConnection connection = (HttpURLConnection) url.openConnection();// 打开连接  
	            connection.connect();// 连接会话  
	            // 获取输入流  
	            BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));  
	            String line;  
	            StringBuilder sb = new StringBuilder();  
	            while ((line = br.readLine()) != null) {// 循环读取流  
	                sb.append(line);  
	            }  
	            br.close();// 关闭流  
	            connection.disconnect();// 断开连接  
	           return sb.toString();  
	        } catch (Exception e) {  
	            e.printStackTrace();  
	            System.out.println("失败!");  
	        }  
	        return null;
	    }  
	 //delete请求
	 public static String DELETE(String url,Map<String,String> dataForm){  
	        HttpClient httpClient = new HttpClient();  
	        DeleteMethod deleteMethod = new DeleteMethod(url);  
	  
	        List<NameValuePair> data = new ArrayList<NameValuePair>();  
	        if(dataForm!=null){  
	            Set<String> keys = dataForm.keySet();  
	            for(String key:keys){  
	                NameValuePair nameValuePair = new NameValuePair(key, (String) dataForm.get(key));  
	                data.add(nameValuePair);  
	            }  
	        }  
	        deleteMethod.setQueryString(data.toArray(new NameValuePair[0]));  
	        try {  
	            int statusCode = httpClient.executeMethod(deleteMethod);  
	            if (statusCode != HttpStatus.SC_OK) {  
	                return "Method failed: " + deleteMethod.getStatusLine();  
	            }  
	            byte[] responseBody = deleteMethod.getResponseBody();  
	            return new String(responseBody);  
	        } catch (IOException e) {  
	            e.printStackTrace();  
	        }finally {  
	            deleteMethod.releaseConnection();  
	        }  
	        return null;  
	    } 
	 //put 请求
	 public static String httpURLConnectionPut (String parm,String Url) {  
		    try {  
		        URL url = new URL(Url);
		        HttpURLConnection connection = (HttpURLConnection) url.openConnection();// 此时cnnection只是为一个连接对象,待连接中  
		        connection.setDoOutput(true);  // 设置连接输出流为true,默认false (post 请求是以流的方式隐式的传递参数)  
		        connection.setDoInput(true);  // 设置连接输入流为true 
		        connection.setRequestMethod("PUT");  // 设置请求方式为post 
		        connection.setUseCaches(false);   // post请求缓存设为false  
		        connection.setInstanceFollowRedirects(true);   // 设置该HttpURLConnection实例是否自动执行重定向  
		        connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");     
		        connection.connect();  // 建立连接 
		        // 创建输入输出流,用于往连接里面输出携带的参数,(输出内容为?后面的内容)  
		        DataOutputStream dataout = new DataOutputStream(connection.getOutputStream());  
		        dataout.writeBytes(parm);  
		        // 输出完成后刷新并关闭流  
		        dataout.flush();  
		        dataout.close(); // 重要且易忽略步骤 (关闭流,切记!)   
		        // 连接发起请求,处理服务器响应  (从连接获取到输入流并包装为bufferedReader)  
		        BufferedReader bf = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8"));   
		        String line;  
		        StringBuilder sb = new StringBuilder(); // 用来存储响应数据  
		        // 循环读取流,若不到结尾处  
		        while ((line = bf.readLine()) != null) {  
		            sb.append(line).append(System.getProperty("line.separator"));  
		        }  
		        bf.close();  
		        connection.disconnect(); // 销毁连接  
		        return sb.toString();
		    } catch (Exception e) {  
		        e.printStackTrace();  
		    }
			return null;  
		}  
}