关于使用纯java获取http url请求返回的信息

话不多说 , 直接上代码 (没有依赖jar)

  1 import java.io.ByteArrayOutputStream;
  2 import java.io.IOException;
  3 import java.io.InputStream;
  4 import java.io.OutputStream;
  5 import java.net.HttpURLConnection;
  6 import java.net.URL;
  7
  8
  9 public class HttpTest {
 10
 11
 12     public static void main(String[] args) {
 13         String path = "http://127.0.0.1:8080/demo/test.servlet" ;
 14 //        String path = "https://www.baidu.com/" ;//只能支持get请求
 15
 16         HttpURLConnection httpURLConnection = null ;
 17         ByteArrayOutputStream byteArrayOutputStream = null ;
 18         OutputStream outputStream = null ;
 19         InputStream inputStream = null ;
 20         URL url = null ;
 21
 22         //从输出流中获取读取到数据(服务端返回的)
 23         String message = null ;
 24         try {
 25             //请求的url
 26             url = new URL(path);
 27
 28             //创建http链接
 29             httpURLConnection = (HttpURLConnection) url.openConnection();
 30
 31             //设置超时时间
 32             httpURLConnection.setConnectTimeout(5000);// 5 秒
 33             httpURLConnection.setReadTimeout(5000);
 34
 35             //设置请求的方法类型
 36             httpURLConnection.setRequestMethod("POST");
 37
 38             //设置通用的请求属性 设置请求格式
 39             httpURLConnection.setRequestProperty("contentType", "utf-8");
 40             httpURLConnection.setRequestProperty("content-type", "application/x-www-form-urlencoded");
 41
 42             //设置发送数据
 43             httpURLConnection.setDoOutput(true);
 44             //设置接受数据
 45             httpURLConnection.setDoInput(true);
 46
 47             //发送数据,使用输出流
 48             outputStream = httpURLConnection.getOutputStream();
 49             outputStream.write(new String("name=zhangshang&pwd=123").getBytes());
 50             outputStream.flush() ;
 51 //        //发送数据
 52             if (httpURLConnection.getResponseCode() == 200) {//成功
 53                 //接收数据
 54                 inputStream = httpURLConnection.getInputStream();
 55                 //定义字节数组
 56                 byte[] b = new byte[1024];
 57                 //定义一个输出流存储接收到的数据
 58                 byteArrayOutputStream = new ByteArrayOutputStream();
 59                 //开始接收数据
 60                 int len = 0;
 61                 while (true) {
 62                     len = inputStream.read(b);
 63                     if (len == -1) {
 64                         //数据读完
 65                         break;
 66                     }
 67                     byteArrayOutputStream.write(b, 0, len);
 68                 }
 69             }else{//失败
 70                 System.err.println("异常HTTP状态码 : "+httpURLConnection.getResponseCode());
 71                 //接收数据
 72                 inputStream = httpURLConnection.getInputStream();
 73                 //定义字节数组
 74                 byte[] b = new byte[1024];
 75                 //定义一个输出流存储接收到的数据
 76                 byteArrayOutputStream = new ByteArrayOutputStream();
 77                 //开始接收数据
 78                 int len = 0;
 79                 while (true) {
 80                     len = inputStream.read(b);
 81                     if (len == -1) {
 82                         //数据读完
 83                         break;
 84                     }
 85                     byteArrayOutputStream.write(b, 0, len);
 86                 }
 87
 88             }
 89             message = byteArrayOutputStream.toString("utf-8");
 90         } catch (Exception e) {
 91             e.printStackTrace();
 92         } finally{
 93             if(null != byteArrayOutputStream){
 94                 try {
 95                     byteArrayOutputStream.close() ;
 96                 } catch (IOException e) {
 97                     e.printStackTrace();
 98                 }
 99             }
100             if(null != inputStream){
101                 try {
102                     inputStream.close() ;
103                 } catch (IOException e) {
104                     e.printStackTrace();
105                 }
106             }
107             if(null != outputStream){
108                 try {
109                     outputStream.close() ;
110                 } catch (IOException e) {
111                     e.printStackTrace();
112                 }
113             }
114             if(null != httpURLConnection){
115                 httpURLConnection.disconnect() ;
116             }
117         }
118         System.out.println(message);
119     }
120 }
    1. 打开和url之间的连接
      HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    2. 设置通用的请求属性

      conn.setRequestProperty("accept", "*/*");
      conn.setRequestProperty("connection", "Keep-Alive");
      conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
    3. 设置是否向httpUrlConnection输出,设置是否从httpUrlConnection读入,此外发送post请求必须设置这两个最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,post与get的 不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。

      conn.setDoOutput(true);
      conn.setDoInput(true);

    4. 断开连接,最好写上,disconnect是在底层tcp socket链接空闲时才切断。如果正在被其他线程使用就不切断。固定多线程的话,如果不disconnect,链接会增多,直到收发不出信息。写上disconnect后正常一些。
      conn.disconnect();

发送http请求然后返回的方法还有很多种 , 我知道有一种叫 httpclient  的jar包 , 封装很完善 , 很好使 ...

原文地址:https://www.cnblogs.com/hi-gdl/p/10560366.html

时间: 2024-10-29 03:25:28

关于使用纯java获取http url请求返回的信息的相关文章

根据URL请求 返回XML字符串

public static string GetHttpResponse(string url) { string content = ""; // Create a new HttpWebRequest object.Make sure that // a default proxy is set if you are behind a fure wall. //其中,HttpWebRequest实例不使用HttpWebRequest的构造函数来创建,二是使用WebRequest的C

用Java获取一个网站的基本配置信息

前言:我们在进行网站渗透的时候,通常第一步都是获取目标网站的一些配置信息,比如:所用的服务器类型,用了哪种CMS,网站又用了哪些插件等等.当然,我们要是在这一步获取到了比较充分的信息,毫无疑问接下来我们就可以有针对性地进行漏洞搜索和挖掘,对最后的渗透测试是非常有帮助的. 一 简介 今天,我主要是给大家安利一个比较好的对目标网站进行基本信息探测的网站,它就是:https://builtwith.com .使用起来也很简单,直接对目标网站进行搜索就行了,比如说我们搜索:https://builtwi

java获取cpu、内存、硬盘信息

1 下载安装sigar-1.6.4.zip 使用java自带的包获取系统数据,容易找不到包,尤其是内存信息不够准确,所以选择使用sigar获取系统信息. 下载地址:http://sourceforge.net/projects/sigar/files/latest/download?source=files 解压压缩包,将lib下sigar.jar导入eclipse的CLASSPATH中,再将sigar-x86-winnt.dll存入Java的bin目录即可. 2 代码示例 /**    * @

【Spring MVC】spring mvc中相同的url请求返回不同的结果

在项目中凡是使用Spring MVC这种控制器的,大多都是返回JSON数据对象,或者JSP页面. 但是相同的URL请求如何让他自动的选择放回的是什么? 在这里有由于鄙人没有亲自测试过,就不敢乱贴代码,只把别人写的引用一下,以防未来某天需要而忘却. 引用地址:http://my.oschina.net/wzlee/blog/262205

jmeter 发送http请求,并把获取到的请求的订单信息保存到文件中

有一个任务,需要频繁发送订单请求,并分析订单请求中有没有存在重复订单号,思路是用jmeter 发送http请求,使用正则表达式获取到订单号,并把订单号和线程号作为参数提供给java请求,在java请求中把订单号写到包括有线程号的命名文件中.完成出来的样子是这样的 步骤如下: 1.Jmeter 发送http请求 1) 新建HTTP信息头管理器 2) 新建HTTP请求 2,在下单过后返回部分信息如下:"msg":"下单成功","result":&qu

MySQL---数据库从入门走向大神系列(十一)-Java获取数据库/结果集的元信息、将数据表写入excel表格

数据库的元信息: 首先介绍一下数据库的元信息(元数据): 元数据(Metadata)是关于数据的数据. 元数据是描述数据仓库内数据的结构和建立方法的数据. 存储的数据是什么类型,什么驱动等等,这些描述数据的数据,就是元数据! 准备: package cn.hncu.pool3; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; i

java 如何解析http请求返回的xml报文

xml报文解析方法有很多种,此处采用dom4j的方法. dom4j的jar包下载地址:https://dom4j.github.io/# 1.request.getInputStream()和new SAXReader().read(输入流): 返回的报文如下: <?xml version="1.0" encoding="UTF-8"?><CreateAccessKeyResponse> <CreateAccessKeyResult&g

js获取与Url链接相关的信息

以下结果的值以此示例为基础:http://www.x2y2.com:80/fisker/post/0703/window.location.html?ver=1.0&id=6#imhere 1.获取URL的协议部分 window.location.protocol    结果:http: 2.获取URL的主机部分 window.location.host         结果:www.x2y2.com 3.获取URL的端口部分 window.location.port         结果:空字

php的curl获取https加密协议请求返回json数据进行信息获取

欢迎增加php架构师之旅 群:410028331(招纳贤人-大师中)方便技术的交流 <?php header("Content-type:text/html; charset=utf-8"); function getToken($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); //相当关键,这句话是让curl_exec