通过HttpURLConnection模拟post表单提交
2016-01-04 19:56
696 查看
package junit; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import org.junit.Test; import com.hrtx.util.StreamTool; public class EsmTest { /** * 通过HttpURLConnection模拟post表单提交 * @throws Exception */ @Test public void sendEms() throws Exception { String wen = "MS2201828"; String btnSearch = "EMS快递查询"; URL url = new URL("http://www.kd185.com/ems.php"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST");// 提交模式 // conn.setConnectTimeout(10000);//连接超时 单位毫秒 // conn.setReadTimeout(2000);//读取超时 单位毫秒 conn.setDoOutput(true);// 是否输入参数 StringBuffer params = new StringBuffer(); // 表单参数与get形式一样 params.append("wen").append("=").append(wen).append("&") .append("btnSearch").append("=").append(btnSearch); byte[] bypes = params.toString().getBytes(); conn.getOutputStream().write(bypes);// 输入参数 InputStream inStream=conn.getInputStream(); System.out.println(new String(StreamTool.readInputStream(inStream), "gbk")); } }
/** * 通过HttpURLConnection模拟post表单提交 * * @param path * @param params 例如"name=zhangsan&age=21" * @return * @throws Exception */ public static byte[] sendPostRequestByForm(String path, String params) throws Exception{ URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST");// 提交模式 // conn.setConnectTimeout(10000);//连接超时 单位毫秒 // conn.setReadTimeout(2000);//读取超时 单位毫秒 conn.setDoOutput(true);// 是否输入参数 byte[] bypes = params.toString().getBytes(); conn.getOutputStream().write(bypes);// 输入参数 InputStream inStream=conn.getInputStream(); return StreamTool.readInputStream(inStream); }
package com.hrtx.util; import java.io.ByteArrayOutputStream; import java.io.InputStream; public class StreamTool { /** * 从输入流中读取数据 * @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; } }
相关文章推荐
- TCP/IP详解--连接状态变迁图CLOSE_WAIT
- Linux内核工程导论——网络:Netfilter概览
- PageRank:核心算法|谷歌如何从网络的大海里捞到针
- 安装Eclipse https://tools.hana.ondemand.com/#abap
- libnids中TCP/IP栈实现细节分析(下)——IP分片重组
- linux网络编程
- ubuntu 网络设置
- http://www.th7.cn/Program/Android/201501/351050.shtml
- 写给后端程序员的HTTP缓存原理介绍
- Android中使用HttpURLConnection实现GET POST JSON数据与下载图片
- 使用 HTTP 缓存机制提升系统性能
- iOS开发之-- DNS解析(网络切换的问题解决)
- 深入理解HTTP协议、HTTP协议原理分析
- HttpClient 教程 (一)
- Python 网络编程之UDP
- App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure.
- 学习编程一切资源http://www.tutorialspoint.com/
- Python 网络之TCP编程
- Android练兵--基于OKHttp的升级改造
- HttpClient使用详解