问题描述:
项目中遇到一个问题,需要向第三方系统提供的Url地址以post方式发送表单信息来测试接口,这让web经验不足的我犯难了,最后通过分析后拆解问题,找到了两种测试接口的办法;
问题分析:
提交表单到指定Url,正常操作是前端写一个按钮,然后点击则会提交表单对象传递给后端;
<input type="button" value="提交" >
这个流程也就是浏览器向服务器的指定资源路径下发送post请求:
抛去旁支末节,简单来说这个需求就是web开发中最基本的功能实现:用浏览器向服务器发请求
所以可以得到解决方案有两种:
1.后台模拟浏览器向指定Url发送post方式的请求数据,这里采用的解决方案是Apache基金会HttpComponents项目,模拟浏览器对服务器发起请求;
2.写个HTML用浏览器模拟发送请求,具体做法是:页面加载函数中绑定submit()自动提交form表单到指定Url;
HttpComponents项目的一些介绍 官网地址:(http://hc.apache.org/);
Apache开源组织中的HttpComponents,主要是提供对http服务器的访问功能;在某些时候可能需要通过程序来访问别人的网页程序,比如从别人的网页中“偷”一些数据。如果对方仅仅是一个很简单的页面,那我们的程序会很简单。但是考虑到一些服务授权的问 题,很多公司提供的页面往往并不是可以通过一个简单的URL就可以访问的,而必须经过注册然后登录后方可使用提供服务的页面,这个时候就涉及到 COOKIE问题的处理。我们知道目前流行的动态网页技术例如ASP、JSP无不是通过COOKIE来处理会话信息的。为了使我们的程序能使用别人所提供的服务页面,就要求程序首先登录后再访问服务页面!再比如通过HTTP来上传文件呢?
HttpComponents项目就是专门设计来简化HTTP客户端与服务器进行各种通讯编程。通过它可以让原来很头疼的事情现在轻松的解决,例如你不再管是HTTP或者HTTPS的通讯方式,告诉它你想使用HTTPS方式,剩下的事情交给 httpclient替你完成。
问题解决:
方案一:使用HttpComponents项目来实现"通过程序来访问服务器资源";
1.手动创建的项目需要Apache基金会的开源项目 HttpComponents 项目的支持,下载对应的项目版本.我这里使用的是 httpcomponents-client-4.5.12-bin 版本,然后建立项目的jar包依赖;
2.如果是maven项目,跳过步骤1,直接导入依赖坐标即可
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.12</version>
</dependency>
3.下面是一个简单的测试类:
import java.io.InputStream;
import java.io.UnsupportedEnc