首先声明下,如果服务端写入的cookie属性是HttpOnly的,程序是不能自动获取cookie的,需要人工登陆网站获取cookie再把cookie写死,如下图所示:
http测试工具:http://www.atool.org/httptest.php
package com.eshore.ismp.hbinterface.vsop.client.productCancelBatcher; import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; import com.alibaba.fastjson.JSONObject; public class HttpLoginUtils {
private final static String UTF8="UTF8";
private final static String MD5="MD5";
private final static char HEX_DIGITS[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd','e', 'f' };
private String cookie="JSESSIONID=E1487B3796D918D418DD8D184278C37E; LBN=node20; login_userId=24%2Cadmin_0%2C%E7%AE%A1%E7%90%86%E5%91%98; login_userType=1";
private static final String userName="admin_0";
private static final String password="Ismp!@#$";
public static final String type="1";
public static final String inputCode="JUGG";
public static final String oldCode="JUGG";
public static final String LOGIN_DCN_URL="http://127.0.0.1:30082/adminweb/user_login.do?";
public static final String LOGIN_URL="http://127.0.0.1:9000/adminweb/user_login.do?";
private static final String CANCEL_URL="http://127.0.0.1:9001/adminweb/hbmonth/productCancel.do?"; public void request(String tel,long time,String contentId) throws MalformedURLException,IOException{
/*try{
cookie=this.login();
}catch(Exception e){
e.printStackTrace();
}*/
//发送请求
JSONObject productList = new JSONObject();
productList.put("contentId",contentId+"@"+contentId);
productList.put("startTime", time);
productList.put("tel", tel);
String param = "productList=["+productList+"]&source=12"
+"&operatorAccount=admin_0"+"&operatorName=管理员";
URL url = new URL(CANCEL_URL);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
httpConn.setDoOutput(true);
httpConn.setRequestMethod("POST");
httpConn.setUseCaches(false);
System.out.println("cookies:"+cookie);
httpConn.setRequestProperty("Cookie",cookie);
OutputStream output = httpConn.getOutputStream();
output.write(param.getBytes());
OutputStreamWriter outr = new OutputStreamWriter(output,"UTF-8");
outr.flush();
outr.close();
BufferedReader redoReader = new BufferedReader(new InputStreamReader(httpConn
.getInputStream(),"UTF-8"));
StringBuffer redoBuf = new StringBuffer();
String line = null;
while ((line = redoReader.readLine()) != null) {
redoBuf.append(line);
}
System.out.println("result info:"+redoBuf.toString());
}
/**
* @return
* 获取cookie
* @throws MalformedURLException,IOException
*/
public String login() throws MalformedURLException,IOException{
String cookie="";
String pswd = this.MD5Encode(password);
String param = "&username="+userName+"&password="+pswd+"&type="+type+"&inputCode="+inputCode+"&oldCode="+oldCode;
URL url=new URL(LOGIN_URL);
HttpURLConnection httpConn=(HttpURLConnection) url.openConnection();
//设定传送的内容类型是可序列化的java对象 (如果不设此项,在传送序列化对象时,当WEB服务默认的不是这种类型时可能抛java.io.EOFException)
httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
//设置是否从httpUrlConnection读入,默认情况下是true
httpConn.setDoOutput(true);
httpConn.setRequestMethod("POST");
//Post 请求不能使用缓存
httpConn.setUseCaches(false);
httpConn.setInstanceFollowRedirects(false);
//httpConn.connect();
// httpConn.getOutputStream();隐形调用了httpConn.connect();
OutputStream output = httpConn.getOutputStream();
//写入输出流
output.write(param.getBytes());
OutputStreamWriter outr = new OutputStreamWriter(output,"UTF-8");
outr.flush();
outr.close();
//创建读对象
BufferedReader loginReader = new BufferedReader(new InputStreamReader(httpConn
.getInputStream(),"UTF-8"));
StringBuffer sb = new StringBuffer();
String line = null;
//一行一行读取
while ((line = loginReader.readLine()) != null) {
sb.append(line);
}
System.out.println("output :"+sb.toString());
//获取服务端返回的cookie
cookie = httpConn.getHeaderField("Set-Cookie");
return cookie;
}
public String MD5Encode(String originalString) {
try {
byte[] originalBytes = originalString.getBytes(UTF8);
MessageDigest md = MessageDigest.getInstance(MD5);
md.update(originalBytes);
byte[] temps = md.digest();
int j = temps.length;
char[] str = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte tempByte = temps[i];
str[k++] = HEX_DIGITS[tempByte >>> 4 & 0xf];
str[k++] = HEX_DIGITS[tempByte & 0xf];
}
return new String(str).toUpperCase(); } catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
/**
* @param args
* test
* @throws IOException
* @throws MalformedURLException
*/
public static void main(String[] args) throws MalformedURLException, IOException {
String cookie=new HttpLoginUtils().login();
System.out.println("cookie:"+cookie);
} }
http模拟登陆及发请求的更多相关文章
-
.net 模拟登陆 post https 请求跳转页面
AllowAutoRedirect property is true, the Referer property is set automatically when the request is re ...
-
python 模拟登陆,请求包含cookie信息
需求: 1.通过GET方法,访问URL地址一,传入cookie参数 2.根据地址一返回的uuid,通过POST方法,传入cooki参数 实现思路: 1.理解http的GET和POST差别 (网上有很多 ...
-
PHP curl 携带cookie请求抓取源码,模拟登陆。
公司需要采集一批手机号码,有指定网站.但是需要登陆后才能看到客户号码,手动点击复制太慢,如此就写了以下模拟登陆采集号码程序,分享给大家参考参考. function request_url_data($ ...
-
python模拟登陆之下载
好长时间没有更新博客了,哈哈. 今天公司给了这么一个需求,现在我们需要去淘宝获取上一天的订单号,然后再根据订单号去另一个接口去获取订单详情,然后再给我展示到web! 中间涉及到的技术点有: 模拟登陆 ...
-
Scrapy基础(十四)————知乎模拟登陆
#-*-coding:utf-8 -*-__author__ = "ruoniao"__date__ = "2017/5/31 20:59" 之前我们通过爬取伯 ...
-
scrapy爬取某网站,模拟登陆过程中遇到的那些坑
本节内容 在访问网站的时候,我们经常遇到有些页面必须用户登录才能访问.这个时候我们之前写的傻傻的爬虫就被ban在门外了.所以本节,我们给爬虫配置cookie,使得爬虫能保持用户已登录的状态,达到获得那 ...
-
模拟登陆CSDN——就是这么简单
工具介绍 本篇文章主要是解说怎样模拟登陆CSDN.使用的工具是HttpClient+Jsoup 当中HttpClient主要是负责发送请求,而Jsoup主要是解析HTML 你可能对HttpClient ...
-
【PHP开发】用curl向https发请求时的35号错误
放了个假发现以前写的程序的模拟登陆不管用了,中间输出,发现curl向https发请求时没有返回数据,输出错误信息,得到: curl_errno($ch) -----> 35 curl_error ...
-
python+requests模拟登陆 学校选课系统
最近学校让我们选课,每天都有不同的课需要选....然后突发奇想试试用python爬学校选课系统的课程信息 先把自己的浏览器缓存清空,然后在登陆界面按f12 如图: 可以看到登陆时候是需要验证码的,验证 ...
随机推荐
-
win8平台下Ruby on Rails的第一个web应用
最近在做一个网站web前端的前期开发,老板要求用Ruby on Rails搭建部署开发环境,上网搜之,发现整个搭建流程比较坑爹,于是用了一款集成软件Bitnami Ruby Stack一键安装到我的w ...
-
PDO操作
1.创建实例与取结果集 <? $db = new PDO('mysql:host=localhost;dbname=test', $user, $pass); $rs = $db->que ...
-
[ActionScript 3.0] AS3.0 获取像素点的灰度
/** * 获取像素点的灰度 * @color 像素点的颜色值 * @return uint */ function getGray(color:uint):uint { return getR(co ...
-
Kubelet bootstrap认证配置步骤
kubelet 授权 kube-apiserver 的一些操作 exec run logs 等 RBAC 只需创建一次就可以 kubectl create clusterrolebinding kub ...
-
<;? extends T>;和<;? super T>;的理解
背景:对泛型中使用super和extends关键字进行分析总结. 问题: public class TestExtend { public static void main(String[] args ...
-
Mac下必备快捷键的符号所对应的按键
Mac下快捷键的符号所对应的按键 ⌥—> option|alt ⇧—>shift ⌃—>control ⌘—>command ⎋—>esc 注: 与F6/F7/F12等F ...
-
MySQL索引背后的数据结构及算法原理(employees实例)
摘要 http://blog.codinglabs.org/articles/theory-of-mysql-index.html 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特 ...
-
P4281 [AHOI2008]紧急集合 / 聚会
P4281 [AHOI2008]紧急集合 / 聚会 lca 题意:求3个点的lca,以及3个点与lca的距离之和. 性质:设点q1,q2,q3 两点之间的lca t1=lca(q1,q2) t2=lc ...
-
Web标准:四、纵向导航菜单及二级弹出菜单
Web标准:四.纵向导航菜单及二级弹出菜单 知识点: 1.纵向列表 2.标签的默认样式 3.css派生选择器 4.css选择器的分组 5.纵向二级列表 6.相对定位和绝对定位 1)纵向列表 可以看 ...
-
CPU体系结构
http://blog.csdn.net/liuxc0116/article/details/17004313 1.算术逻辑单元ALU(Arithmetic Logic Unit)ALU是运算器的核心 ...