zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

2023-06-13 09:15:29 时间

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

复制代码代码如下:
packagecom.cplatform.movie.back.test;

importjava.io.BufferedReader;
importjava.io.DataOutputStream;
importjava.io.InputStreamReader;
importjava.net.HttpURLConnection;
importjava.net.URL;
importjava.net.URLEncoder;

publicclassHttpURLConnectionTest{
   publicstaticfinalStringGET_URL="http://112.4.27.9/mall-back/if_user/store_list?storeId=32";
   publicstaticfinalStringPOST_URL="http://112.4.27.9/mall-back/if_user/store_list";
   
   /**
    *接口调用GET
    */
   publicstaticvoidhttpURLConectionGET(){
       try{
           URLurl=newURL(GET_URL);   //把字符串转换为URL请求地址
           HttpURLConnectionconnection=(HttpURLConnection)url.openConnection();//打开连接
           connection.connect();//连接会话
           //获取输入流
           BufferedReaderbr=newBufferedReader(newInputStreamReader(connection.getInputStream()));
           Stringline;
           StringBuildersb=newStringBuilder();
           while((line=br.readLine())!=null){//循环读取流
               sb.append(line);
           }
           br.close();//关闭流
           connection.disconnect();//断开连接
           System.out.println(sb.toString());
       }catch(Exceptione){
           e.printStackTrace();
           System.out.println("失败!");
       }
   }
   
   /**
    *接口调用 POST
    */
   publicstaticvoidhttpURLConnectionPOST(){
       try{
           URLurl=newURL(POST_URL);
           
           //将url以open方法返回的urlConnection 连接强转为HttpURLConnection连接 (标识一个url所引用的远程对象连接)
           HttpURLConnectionconnection=(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-javascripttext/xml->xml数据application/x-javascript->json对象application/x-www-form-urlencoded->表单数据
           connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
           
           //建立连接(请求未开始,直到connection.getInputStream()方法调用时才发起,以上各个参数设置需在此方法之前进行)
           connection.connect();
           
           //创建输入输出流,用于往连接里面输出携带的参数,(输出内容为?后面的内容)
           DataOutputStreamdataout=newDataOutputStream(connection.getOutputStream());
           Stringparm="storeId="+URLEncoder.encode("32","utf-8");//URLEncoder.encode()方法 为字符串进行编码
           
           //将参数输出到连接
           dataout.writeBytes(parm);
           
           //输出完成后刷新并关闭流
           dataout.flush();
           dataout.close();//重要且易忽略步骤(关闭流,切记!)
           
           System.out.println(connection.getResponseCode());
           
           //连接发起请求,处理服务器响应 (从连接获取到输入流并包装为bufferedReader)
           BufferedReaderbf=newBufferedReader(newInputStreamReader(connection.getInputStream()));
           Stringline;
           StringBuildersb=newStringBuilder();//用来存储响应数据
           
           //循环读取流,若不到结尾处
           while((line=bf.readLine())!=null){
               sb.append(bf.readLine());
           }
           bf.close();   //重要且易忽略步骤(关闭流,切记!)
           connection.disconnect();//销毁连接
           System.out.println(sb.toString());
   
       }catch(Exceptione){
           e.printStackTrace();
       }
   }
   
   publicstaticvoidmain(String[]args){
//       httpURLConectionGET();
       httpURLConnectionPOST();
   }
}

希望本文所述对大家的Java程序设计有所帮助。