java模拟Http请求
http请求分多种,接下来只考虑post方式-非喜勿喷,求拍砖~
使用java编程模拟http请求以post方式大致分为以下步骤:
一、通过抓包工具(或者浏览器自带的调试工具)来获取http请求的具体信息,如Request URL、User-Agent、Accept-Language、Accept-Encoding、cookie等信息,其中较关键的是要先找出Request URL、User-Agent(目前遇到过这两种)、cookie(作为备选有些网站需要这个)、charset(防止乱码时才需要非核心);
二、利用上一步获取的数据以及成熟的在线http模拟请求工具快速定位关键的头信息是完成代码的关键步骤;
三、目前通过在线的方式进行http请求的调试工具可以快速分辨出那些请求头信息是不可缺少的,推荐网址:http://www.sojson.com/httpRequest/(该工具多种多样,可自选)
以上是开发的准备工作,只有获取到关键的请求信息才能减少不必要的浪费
java实现(非原创)
URL realUrl = new URL(""); HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection(); // 连接超时 conn.setConnectTimeout(50000); // 读取超时 --服务器响应比较慢,增大时间 conn.setReadTimeout(50000); // 自动重定向 HttpURLConnection.setFollowRedirects(true); // 请求方式 conn.setRequestMethod("POST"); // url是否可以进行输出 conn.setDoOutput(true); // url是否可以进行输入 conn.setDoInput(true); // 添加头信息 conn.setRequestProperty( "User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36"); // 发起连接 conn.connect(); // 获取URLConnection对象对应的输出流 OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream()); // 发送请求参数 out.write("txt=" + URLEncoder.encode(params, "UTF-8")); out.flush(); out.close(); // 获取返回的信息 InputStream in = conn.getInputStream(); BufferedReader read = new BufferedReader(new InputStreamReader(in, "UTF-8")); String valueString = null; while ((valueString = read.readLine()) != null) { bufferRes.append(valueString); } in.close(); if (conn != null) { conn.disconnect(); }
//解析over
相关推荐
86193952 2020-10-27
knightwatch 2020-07-19
88407013 2020-06-16
标题无所谓 2020-06-10
小木兮子 2020-11-11
HeyShHeyou 2020-11-17
seanzed 2020-10-15
huangliuyu00 2020-09-24
libaoshan 2020-09-11
zhangpan 2020-09-10
chongxiaocheng 2020-08-16
xcguoyu 2020-08-15
Qizonghui 2020-08-02
ldcwang 2020-07-26
mqfcu 2020-07-21
jeason 2020-07-20
sunzhihaofuture 2020-07-19
点滴技术生活 2020-07-19