java后台调用HttpURLConnection类模拟浏览器请求实例(可用于接口调用)

这篇文章主要介绍了Java后台调用HttpURLConnection类模拟浏览器请求实例,该实例可用于接口调用,具有一定的实用价值,需要的朋友可以参考下

一般在项目开发中难免遇到外部接口的调用,本文实例讲述了java后台调用HttpURLConnection类模拟浏览器请求的方法。可用于接口调用。分享给大家供大家参考。具体实现方法如下:

<span style="font-size:14px;">package com.cntv.service.serviceImpl;
	import java.io.BufferedReader;  
	  
	import java.io.DataOutputStream;  
	  
	import java.io.InputStreamReader;  
	  
	import java.net.HttpURLConnection;  
	  
	import java.net.URL;  
	  
	import java.net.URLEncoder;   
	 public class HttpURLConnectionTest {  
	  
	    public static final String GET_URL = "http://112.4.27.9/mall-back/if_user/store_list?storeId=32";  
	  
	    public static final String POST_URL = "http://112.4.27.9/mall-back/if_user/store_list";  
	    
          //public static final String POST_URL = "http://www.yodao.com/smartresult-xml/search.s?type=id&q=513721199511287976";  
	  
	      
	  
	    /** 
	 
	     * 接口调用 GET 
	 
	     */  
	  
	    public static void httpURLConectionGET() {  
	  
	        try {  
	  
	            URL url = new URL(GET_URL);    // 把字符串转换为URL请求地址  
	  
	            HttpURLConnection connection = (HttpURLConnection) url.openConnection();// 打开连接  
	  
	            connection.connect();// 连接会话  
	  
	            // 获取输入流  
	  
	            BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));  
	  
	            String line;  
	  
	            StringBuilder sb = new StringBuilder();  
	  
	            while ((line = br.readLine()) != null) {// 循环读取流  
	  
	                sb.append(line);  
	  
	            }  
	  
	            br.close();// 关闭流  
	  
	            connection.disconnect();// 断开连接  
	  
	            System.out.println(sb.toString());  
	  
	        } catch (Exception e) {  
	  
	            e.printStackTrace();  
	  
	            System.out.println("失败!");  
	  
	        }  
	  
	    }  
	  
	      
	  
	    /** 
	 
	     * 接口调用  POST 
	 
	     */  
	  
	    public static void httpURLConnectionPOST () {  
	  
	        try {  
	  
	            URL url = new URL(POST_URL);  
	  
	              
	  
	            // 将url 以 open方法返回的urlConnection  连接强转为HttpURLConnection连接  (标识一个url所引用的远程对象连接)  
	  
	            HttpURLConnection connection = (HttpURLConnection) url.openConnection();// 此时cnnection只是为一个连接对象,待连接中  
	  
	              
	  
	            // 设置连接输出流为true,默认false (post 请求是以流的方式隐式的传递参数)  
	  
	            connection.setDoOutput(true);  
	  
	              
	  
	            // 设置连接输入流为true  
	  
	            connection.setDoInput(true);  
	  
	              
	  
	            // 设置请求方式为post  
	  
	            connection.setRequestMethod("POST");  
	  
	              
	  
	            // post请求缓存设为false  
	  
	            connection.setUseCaches(false);  
	  
	              
	  
	            // 设置该HttpURLConnection实例是否自动执行重定向  
	  
	            connection.setInstanceFollowRedirects(true);  
	  
	              
	  
	            // 设置请求头里面的各个属性 (以下为设置内容的类型,设置为经过urlEncoded编码过的from参数)  
	  
	            // application/x-javascript text/xml->xml数据 application/x-javascript->json对象 application/x-www-form-urlencoded->表单数据  
	  
	            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");  
	  
	              
	  
	            // 建立连接 (请求未开始,直到connection.getInputStream()方法调用时才发起,以上各个参数设置需在此方法之前进行)  
	  
	            connection.connect();  
	  
	              
	  
	            // 创建输入输出流,用于往连接里面输出携带的参数,(输出内容为?后面的内容)  
	  
	            DataOutputStream dataout = new DataOutputStream(connection.getOutputStream());  
	  
	            String parm = "storeId=" + URLEncoder.encode("32", "utf-8"); //URLEncoder.encode()方法  为字符串进行编码  
	  
	              
	  
	            // 将参数输出到连接  
	  
	            dataout.writeBytes(parm);  
	  
	              
	  
	            // 输出完成后刷新并关闭流  
	  
	            dataout.flush();  
	  
	            dataout.close(); // 重要且易忽略步骤 (关闭流,切记!)   
	  
	              
	  
	            System.out.println(connection.getResponseCode());  
	  
	              
	  
	            // 连接发起请求,处理服务器响应  (从连接获取到输入流并包装为bufferedReader)  
	  
	            BufferedReader bf = new BufferedReader(new InputStreamReader(connection.getInputStream()));   
	  
	            String line;  
	  
	            StringBuilder sb = new StringBuilder(); // 用来存储响应数据  
	  
	              
	  
	            // 循环读取流,若不到结尾处  
	  
	            while ((line = bf.readLine()) != null) {  
	  
	                sb.append(bf.readLine());  
	  
	            }  
	  
	            bf.close();    // 重要且易忽略步骤 (关闭流,切记!)   
	  
	            connection.disconnect(); // 销毁连接  
	  
	            System.out.println(sb.toString());  
	  
	      
	  
	        } catch (Exception e) {  
	  
	            e.printStackTrace();  
	  
	        }  
	  
	    }  
	  
	      
	  
	    public static void main(String[] args) {  
	  
	        httpURLConectionGET();  
	  
//	        httpURLConnectionPOST();  
	  
	    }  
	  
	}   
</span>




===================================>下面负责代码在文本中

package com.cntv.service.serviceImpl;
import java.io.BufferedReader;  
 
import java.io.DataOutputStream;  
 
import java.io.InputStreamReader;  
 
import java.net.HttpURLConnection;  
 
import java.net.URL;  
 
import java.net.URLEncoder;   
public class HttpURLConnectionTest {  
 
   public static final String GET_URL = "http://112.4.27.9/mall-back/if_user/store_list?storeId=32";  
 
   public static final String POST_URL = "http://112.4.27.9/mall-back/if_user/store_list";  
   
//     public static final String POST_URL = "http://www.yodao.com/smartresult-xml/search.s?type=id&q=513721199511287976";  
 
     
 
   /** 
 
    * 接口调用 GET 
 
    */  
 
   public static void httpURLConectionGET() {  
 
       try {  
 
           URL url = new URL(GET_URL);    // 把字符串转换为URL请求地址  
 
           HttpURLConnection connection = (HttpURLConnection) url.openConnection();// 打开连接  
 
           connection.connect();// 连接会话  
 
           // 获取输入流  
 
           BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));  
 
           String line;  
 
           StringBuilder sb = new StringBuilder();  
 
           while ((line = br.readLine()) != null) {// 循环读取流  
 
               sb.append(line);  
 
           }  
 
           br.close();// 关闭流  
 
           connection.disconnect();// 断开连接  
 
           System.out.println(sb.toString());  
 
       } catch (Exception e) {  
 
           e.printStackTrace();  
 
           System.out.println("失败!");  
 
       }  
 
   }  
 
     
 
   /** 
 
    * 接口调用  POST 
 
    */  
 
   public static void httpURLConnectionPOST () {  
 
       try {  
 
           URL url = new URL(POST_URL);  
 
             
 
           // 将url 以 open方法返回的urlConnection  连接强转为HttpURLConnection连接  (标识一个url所引用的远程对象连接)  
 
           HttpURLConnection connection = (HttpURLConnection) url.openConnection();// 此时cnnection只是为一个连接对象,待连接中  
 
             
 
           // 设置连接输出流为true,默认false (post 请求是以流的方式隐式的传递参数)  
 
           connection.setDoOutput(true);  
 
             
 
           // 设置连接输入流为true  
 
           connection.setDoInput(true);  
 
             
 
           // 设置请求方式为post  
 
           connection.setRequestMethod("POST");  
 
             
 
           // post请求缓存设为false  
 
           connection.setUseCaches(false);  
 
             
 
           // 设置该HttpURLConnection实例是否自动执行重定向  
 
           connection.setInstanceFollowRedirects(true);  
 
             
 
           // 设置请求头里面的各个属性 (以下为设置内容的类型,设置为经过urlEncoded编码过的from参数)  
 
           // application/x-javascript text/xml->xml数据 application/x-javascript->json对象 application/x-www-form-urlencoded->表单数据  
 
           connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");  
 
             
 
           // 建立连接 (请求未开始,直到connection.getInputStream()方法调用时才发起,以上各个参数设置需在此方法之前进行)  
 
           connection.connect();  
 
             
 
           // 创建输入输出流,用于往连接里面输出携带的参数,(输出内容为?后面的内容)  
 
           DataOutputStream dataout = new DataOutputStream(connection.getOutputStream());  
 
           String parm = "storeId=" + URLEncoder.encode("32", "utf-8"); //URLEncoder.encode()方法  为字符串进行编码  
 
             
 
           // 将参数输出到连接  
 
           dataout.writeBytes(parm);  
 
             
 
           // 输出完成后刷新并关闭流  
 
           dataout.flush();  
 
           dataout.close(); // 重要且易忽略步骤 (关闭流,切记!)   
 
             
 
           System.out.println(connection.getResponseCode());  
 
             
 
           // 连接发起请求,处理服务器响应  (从连接获取到输入流并包装为bufferedReader)  
 
           BufferedReader bf = new BufferedReader(new InputStreamReader(connection.getInputStream()));   
 
           String line;  
 
           StringBuilder sb = new StringBuilder(); // 用来存储响应数据  
 
             
 
           // 循环读取流,若不到结尾处  
 
           while ((line = bf.readLine()) != null) {  
 
               sb.append(bf.readLine());  
 
           }  
 
           bf.close();    // 重要且易忽略步骤 (关闭流,切记!)   
 
           connection.disconnect(); // 销毁连接  
 
           System.out.println(sb.toString());  
 
     
 
       } catch (Exception e) {  
 
           e.printStackTrace();  
 
       }  
 
   }  
 
     
 
   public static void main(String[] args) {  
 
       httpURLConectionGET();  
 
//        httpURLConnectionPOST();  
 
   }  
 
}   


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用JavaHttpURLConnection或者Apache的HttpClient库来调用第三方get请求接口。下面是HttpURLConnection的示例代码: ``` import java.net.HttpURLConnection; import java.net.URL; import java.io.BufferedReader; import java.io.InputStreamReader; public class HttpGetRequest { public static void main(String[] args) { try { URL url = new URL("https://api.example.com/data"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); int responseCode = connection.getResponseCode(); System.out.println("Response Code : " + responseCode); BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); System.out.println(response.toString()); } catch (Exception e) { System.out.println("Error: " + e.getMessage()); } } } ``` 在这个例子中,我们创建了一个URL对象,然后使用HttpURLConnection打开连接。我们设置请求方法为GET,然后获取响应的状态码和响应内容。最后,我们将响应内容输出到控制台。 如果你想使用Apache的HttpClient库,可以参考以下代码: ``` import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.HttpResponse; import org.apache.http.util.EntityUtils; public class HttpGetRequest { public static void main(String[] args) { try { HttpClient client = HttpClientBuilder.create().build(); HttpGet request = new HttpGet("https://api.example.com/data"); HttpResponse response = client.execute(request); System.out.println("Response Code : " + response.getStatusLine().getStatusCode()); String responseString = EntityUtils.toString(response.getEntity(), "UTF-8"); System.out.println(responseString); } catch (Exception e) { System.out.println("Error: " + e.getMessage()); } } } ``` 在这个例子中,我们创建了一个HttpClient实例,然后创建一个HttpGet请求对象。我们使用HttpClient实例执行HttpGet请求,并获取响应。最后,我们将响应内容输出到控制台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值