java后台调用HttpURLConnection类模拟浏览器请求实例(可用于接口调用)
一般在项目开发中难免遇到外部接口的调用,本文实例讲述了java后台调用HttpURLConnection类模拟浏览器请求的方法。可用于接口调用。分享给大家供大家参考。具体实现方法如下:
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程序设计有所帮助。
相关文章
- java单例模式_Java单例模式
- java开发常用四大框架_Java 后台开发框架[通俗易懂]
- MySQL字段类型如何转为java_Java JDBC中,MySQL字段类型到JAVA类型的转换
- 编写java判断闰年_Java 判断闰年代码实例
- java resourcebundle_Java – Properties和ResourceBundle类学习「建议收藏」
- java mutator,Java – 使用Accessor和Mutator方法「建议收藏」
- JAVA为啥要用stream流处理_java哪个部分最难学
- java 缓存工具类初始化_Java缓存框架
- Java 在IDEA社区版中配置Tomcat并使用
- JAVA读取csv文件_java读取csv文件某一列
- JAVA每月运势api调用代码实例详解手机开发
- Java 定时器类 Timer 使用方法详解编程语言
- java 标准输出与标准错误 out与 err 区别 用法 联系 java中的out与err区别 System.out和System.err的区别 System.out.println和System.err.println的区别 Java重定向System.out和System.err详解编程语言
- 处理使用Java处理Redis有效时间过期(redisjava过期)
- 清理Redis 之 Java 时光剪影:过期键值对的清理(redisjava过期)
- 如何在Linux系统下有效地启动Java程序,让你的代码在Linux中也能正常运行?(linux下启动java)
- 掌握必备技能:Linux下Java命令的使用(java命令linux)
- Java自动解压文件实例代码
- java操作mongodb实现CURD功能实例
- Java中三种简单注解介绍和代码实例