原文链接:http://www.cnblogs.com/nick-huang/p/3859353.html
如何通过Java发送HTTP请求,通俗点讲,如何通过Java(模拟浏览器)发送HTTP请求。
Java有原生的API可用于发送HTTP请求,即java.net.URL、java.net.URLConnection,这些API很好用、很常用,但不够简便;
所以,也流行有许多Java HTTP请求的framework,如,Apache的HttpClient。
目前项目主要用到Java原生的方式,所以,这里主要介绍此方式。
运用原生Java Api发送简单的Get请求、Post请求
HTTP请求粗分为两种,一种是GET请求,一种是POST请求。(详细的请见:Hypertext Transfer Protocol -- HTTP/1.1 - Method Definitions)
使用Java发送这两种请求的代码大同小异,只是一些参数设置的不同。步骤如下:
- 通过统一资源定位器(java.net.URL)获取连接器(java.net.URLConnection)
- 设置请求的参数
- 发送请求
- 以输入流的形式获取返回内容
- 关闭输入流
简单的Get请求示例如下:
![](https://i-blog.csdnimg.cn/blog_migrate/cdec0645add3fc3c328197dda5c76203.gif)
简单的Post请求示例如下:
![](https://i-blog.csdnimg.cn/blog_migrate/cdec0645add3fc3c328197dda5c76203.gif)
简单封装
如果项目中有多处地方使用HTTP请求,我们适当对其进行封装,
- 可以大大减少代码量(不需每次都写一大段原生的请求Source code)
- 也可以使配置更灵活、方便(全局设置一些项目特有的配置,比如已商榷的time out时间、已确定的Proxy Server,避免以后改动繁琐)
以下简单封装成HttpRequestor,以便使用:
![](https://i-blog.csdnimg.cn/blog_migrate/cdec0645add3fc3c328197dda5c76203.gif)
写一个调用的测试类:
![](https://i-blog.csdnimg.cn/blog_migrate/cdec0645add3fc3c328197dda5c76203.gif)
OK,完成!!
简单测试
以上的请求地址都是http://localhost:8080/OneHttpServer/
这是自己的一个用于测试的Web Application,就一个简单的Servlet和web.xml。毕竟需要测试请求参数是否能正常接收,处理超时的情况。
LoginServlet
![](https://i-blog.csdnimg.cn/blog_migrate/cdec0645add3fc3c328197dda5c76203.gif)
web.xml
![](https://i-blog.csdnimg.cn/blog_migrate/cdec0645add3fc3c328197dda5c76203.gif)
感觉自己萌萌哒!~~