首页 > 编程 > Java > 正文

JAVA发送http get/post请求,调用http接口、方法详解

2019-11-26 09:03:04
字体:
来源:转载
供稿:网友

三个例子 ―JAVA发送http get/post请求,调用http接口、方法

例1:使用 HttpClient (commons-httpclient-3.0.jar
jar下载地址:http://xiazai.VeVB.COm/201904/yuanma/commons-httpclient-3.0.rar

import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.methods.InputStreamRequestEntity;import org.apache.commons.httpclient.methods.PostMethod;import org.apache.commons.httpclient.methods.RequestEntity;public class HttpTool { /**  * 发送post请求  *   * @author Michael -----CSDN: http://blog.csdn.net/capmiachael  * @param params  *   参数  * @param requestUrl  *   请求地址  * @param authorization  *   授权书  * @return 返回结果  * @throws IOException  */ public static String sendPost(String params, String requestUrl,   String authorization) throws IOException {  byte[] requestBytes = params.getBytes("utf-8"); // 将参数转为二进制流  HttpClient httpClient = new HttpClient();// 客户端实例化  PostMethod postMethod = new PostMethod(requestUrl);  //设置请求头Authorization  postMethod.setRequestHeader("Authorization", "Basic " + authorization);  // 设置请求头 Content-Type  postMethod.setRequestHeader("Content-Type", "application/json");  InputStream inputStream = new ByteArrayInputStream(requestBytes, 0,    requestBytes.length);  RequestEntity requestEntity = new InputStreamRequestEntity(inputStream,    requestBytes.length, "application/json; charset=utf-8"); // 请求体  postMethod.setRequestEntity(requestEntity);  httpClient.executeMethod(postMethod);// 执行请求  InputStream soapResponseStream = postMethod.getResponseBodyAsStream();// 获取返回的流  byte[] datas = null;  try {   datas = readInputStream(soapResponseStream);// 从输入流中读取数据  } catch (Exception e) {   e.printStackTrace();  }  String result = new String(datas, "UTF-8");// 将二进制流转为String  // 打印返回结果  // System.out.println(result);  return result; } /**  * 从输入流中读取数据  *   * @param inStream  * @return  * @throws Exception  */ public static byte[] readInputStream(InputStream inStream) throws Exception {  ByteArrayOutputStream outStream = new ByteArrayOutputStream();  byte[] buffer = new byte[1024];  int len = 0;  while ((len = inStream.read(buffer)) != -1) {   outStream.write(buffer, 0, len);  }  byte[] data = outStream.toByteArray();  outStream.close();  inStream.close();  return data; }}

例2:

import java.io.BufferedReader; import java.io.IOException;import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter;import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.InetSocketAddress;import java.net.Proxy;import java.net.URL; import java.net.URLConnection;import java.util.List;import java.util.Map;/**  * Http请求工具类  * @author snowfigure  * @since 2014-8-24 13:30:56  * @version v1.0.1  */public class HttpRequestUtil { static boolean proxySet = false; static String proxyHost = "127.0.0.1"; static int proxyPort = 8087; /**   * 编码   * @param source   * @return   */  public static String urlEncode(String source,String encode) {   String result = source;   try {    result = java.net.URLEncoder.encode(source,encode);   } catch (UnsupportedEncodingException e) {    e.printStackTrace();    return "0";   }   return result;  } public static String urlEncodeGBK(String source) {   String result = source;   try {    result = java.net.URLEncoder.encode(source,"GBK");   } catch (UnsupportedEncodingException e) {    e.printStackTrace();    return "0";   }   return result;  } /**   * 发起http请求获取返回结果   * @param req_url 请求地址   * @return   */  public static String httpRequest(String req_url) {  StringBuffer buffer = new StringBuffer();   try {    URL url = new URL(req_url);    HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();    httpUrlConn.setDoOutput(false);    httpUrlConn.setDoInput(true);    httpUrlConn.setUseCaches(false);    httpUrlConn.setRequestMethod("GET");    httpUrlConn.connect();    // 将返回的输入流转换成字符串    InputStream inputStream = httpUrlConn.getInputStream();    InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");    BufferedReader bufferedReader = new BufferedReader(inputStreamReader);    String str = null;    while ((str = bufferedReader.readLine()) != null) {     buffer.append(str);    }    bufferedReader.close();    inputStreamReader.close();    // 释放资源    inputStream.close();    inputStream = null;    httpUrlConn.disconnect();   } catch (Exception e) {    System.out.println(e.getStackTrace());   }   return buffer.toString();  }  /**   * 发送http请求取得返回的输入流   * @param requestUrl 请求地址   * @return InputStream   */  public static InputStream httpRequestIO(String requestUrl) {   InputStream inputStream = null;   try {    URL url = new URL(requestUrl);    HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();    httpUrlConn.setDoInput(true);    httpUrlConn.setRequestMethod("GET");    httpUrlConn.connect();    // 获得返回的输入流    inputStream = httpUrlConn.getInputStream();   } catch (Exception e) {    e.printStackTrace();   }   return inputStream;  } /**  * 向指定URL发送GET方法的请求  *   * @param url  *   发送请求的URL  * @param param  *   请求参数,请求参数应该是 name1=value1&name2=value2 的形式。  * @return URL 所代表远程资源的响应结果  */ public static String sendGet(String url, String param) {  String result = "";  BufferedReader in = null;  try {   String urlNameString = url + "?" + param;   URL realUrl = new URL(urlNameString);   // 打开和URL之间的连接   URLConnection connection = realUrl.openConnection();   // 设置通用的请求属性   connection.setRequestProperty("accept", "*/*");   connection.setRequestProperty("connection", "Keep-Alive");   connection.setRequestProperty("user-agent",     "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");   // 建立实际的连接   connection.connect();   // 获取所有响应头字段   Map<String, List<String>> map = connection.getHeaderFields();   // 遍历所有的响应头字段   for (String key : map.keySet()) {    System.out.println(key + "--->" + map.get(key));   }   // 定义 BufferedReader输入流来读取URL的响应   in = new BufferedReader(new InputStreamReader(     connection.getInputStream()));   String line;   while ((line = in.readLine()) != null) {    result += line;   }  } catch (Exception e) {   System.out.println("发送GET请求出现异常!" + e);   e.printStackTrace();  }  // 使用finally块来关闭输入流  finally {   try {    if (in != null) {     in.close();    }   } catch (Exception e2) {    e2.printStackTrace();   }  }  return result; } /**  * 向指定 URL 发送POST方法的请求  *   * @param url  *   发送请求的 URL  * @param param  *   请求参数,请求参数应该是 name1=value1&name2=value2 的形式。  * @param isproxy  *    是否使用代理模式  * @return 所代表远程资源的响应结果  */ public static String sendPost(String url, String param,boolean isproxy) {  OutputStreamWriter out = null;  BufferedReader in = null;  String result = "";  try {   URL realUrl = new URL(url);   HttpURLConnection conn = null;   if(isproxy){//使用代理模式    @SuppressWarnings("static-access")    Proxy proxy = new Proxy(Proxy.Type.DIRECT.HTTP, new InetSocketAddress(proxyHost, proxyPort));    conn = (HttpURLConnection) realUrl.openConnection(proxy);   }else{    conn = (HttpURLConnection) realUrl.openConnection();   }   // 打开和URL之间的连接   // 发送POST请求必须设置如下两行   conn.setDoOutput(true);   conn.setDoInput(true);   conn.setRequestMethod("POST"); // POST方法   // 设置通用的请求属性   conn.setRequestProperty("accept", "*/*");   conn.setRequestProperty("connection", "Keep-Alive");   conn.setRequestProperty("user-agent",     "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");   conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");   conn.connect();   // 获取URLConnection对象对应的输出流   out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");   // 发送请求参数   out.write(param);   // flush输出流的缓冲   out.flush();   // 定义BufferedReader输入流来读取URL的响应   in = new BufferedReader(     new InputStreamReader(conn.getInputStream()));   String line;   while ((line = in.readLine()) != null) {    result += line;   }  } catch (Exception e) {   System.out.println("发送 POST 请求出现异常!"+e);   e.printStackTrace();  }  //使用finally块来关闭输出流、输入流  finally{   try{    if(out!=null){     out.close();    }    if(in!=null){     in.close();    }   }   catch(IOException ex){    ex.printStackTrace();   }  }  return result; }  public static void main(String[] args) {  //demo:代理访问  String url = "http://api.adf.ly/api.php";  String para = "key=youkeyid&youuid=uid&advert_type=int&domain=adf.ly&url=http://somewebsite.com";  String sr=HttpRequestUtil.sendPost(url,para,true);  System.out.println(sr); }}

例3

/**  * 发送Http post请求  *   * @param xmlInfo  *   json转化成的字符串  * @param URL  *   请求url  * @return 返回信息  */ public static String doHttpPost(String xmlInfo, String URL) {  System.out.println("发起的数据:" + xmlInfo);  byte[] xmlData = xmlInfo.getBytes();  InputStream instr = null;  java.io.ByteArrayOutputStream out = null;  try {   URL url = new URL(URL);   URLConnection urlCon = url.openConnection();   urlCon.setDoOutput(true);   urlCon.setDoInput(true);   urlCon.setUseCaches(false);   urlCon.setRequestProperty("content-Type", "application/json");   urlCon.setRequestProperty("charset", "utf-8");   urlCon.setRequestProperty("Content-length",     String.valueOf(xmlData.length));   System.out.println(String.valueOf(xmlData.length));   DataOutputStream printout = new DataOutputStream(     urlCon.getOutputStream());   printout.write(xmlData);   printout.flush();   printout.close();   instr = urlCon.getInputStream();   byte[] bis = IOUtils.toByteArray(instr);   String ResponseString = new String(bis, "UTF-8");   if ((ResponseString == null) || ("".equals(ResponseString.trim()))) {    System.out.println("返回空");   }   System.out.println("返回数据为:" + ResponseString);   return ResponseString;  } catch (Exception e) {   e.printStackTrace();   return "0";  } finally {   try {    out.close();    instr.close();   } catch (Exception ex) {    return "0";   }  } }

以上所述是小编给大家介绍的Java发送http get/post请求调用接口/方法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表