idhttp提交post带参数并带上cookie
有这么一个提交连接
http://www.XXXXXX.com/test.php?p1=411328&p2=1&d1=HeroSkinList
一共有三个参数[p1] [p2] [d1]
postcmd := TStringList.Create; // 组合参数列表
postcmd.Add('p1=4011058724');
postcmd.Add('p2=30');
postcmd.Add('d1=HeroSkinList');
以上即可将参数组合,然后利用idhttp进行post提交
Memo1.Text := idhtp1.Post(url1, postcmd); // 以post的方式发送到服务器
memo1.text当中直接就返回post提交后返回的数据,但是这个时候只是将参数带到了连接当中进行提交,并没有带上cookie
加入网站需要登录信息的情况下,直接提交就有可能提交失败,因此要把cookie带上
如何获取cookie,web框架用的是DCEF框架,直接利用执行js代码的方式可以获得cookie,方法如下:
procedure TForm1.btn4Click(Sender: TObject);
var
js: string;
begin
js := 'var uPage=document.cookie; alert(uPage);'; //在次js代码当中,将document.cookie指令(猜测这个指令应该是dcef自带的,任何网站都适用)返回的数据赋值给uPage,然后利用alert弹框将内容弹出给crmJsdialog事件,在事件中获得相关js返回的结果
crm.Browser.MainFrame.ExecuteJavaScript(js, 'about:blank', 0);
end;
执行次js后如何取得js返回的结果呢,方法如下:
在dcef控件当中,有事件
procedure TForm1.crmJsdialog(Sender: TObject; const browser: ICefBrowser; const originUrl, acceptLang: ustring; dialogType: TCefJsDialogType; const messageText, defaultPromptText: ustring; callback: ICefJsDialogCallback; out suppressMessage, Result: Boolean);
begin
Memo1.Lines.Clear;
Memo1.Lines.Add(messageText); //messageText即为js代码当中利用alert弹出对话框内容
Result := False; //这里返回true表示不再弹出提示对话框
end;
由此获得cookie的结果,然后将结果附带进入idhttp当中:
idhtp1.Request.CustomHeaders.Add('Cookie:' + memo1.Text);
最后利用 Memo1.Text := idhtp1.Post(url1, postcmd); // 以post的方式发送到服务器
方法post给服务器即可
idhttp提交post带参数并带上cookie的更多相关文章
- jmeter接口测试实例:带参数、带token
测试内容简介: 1.get请求,无参数 2.get请求,参数为第一条响应中的id 3.get请求,带token 结构图: 下面进行详解: 一.添加cookie管理器等 1.添加ht ...
- 带参数,头信息,代理,cookie爬取
1.get传参 (1)汉字报错 :解释器器ascii没有汉字 url汉字转码 urllib.parse.quote safe="string.printtable" (2)字典传参 ...
- python 全栈开发,Day11(函数名应用,闭包,装饰器初识,带参数以及带返回值的装饰器)
一.函数名应用 函数名是什么?函数名是函数的名字,本质:变量,特殊的变量. 函数名(),执行此函数. python 规范写法 1. #后面加一个空格,再写内容,就没有波浪线了. 2.一行代码写完,下面 ...
- sql分页带参数,带排序等,动态实现的方法
USE [YQOBS] GO /****** Object: StoredProcedure [dbo].[PageList] Script Date: 11/06/2014 11:39:35 *** ...
- http post 请求,带参数,带请求头
#!/usr/bin/env python # -*- coding: utf-8 -*- import requests import json url = 'http://............ ...
- Qt5教程: (4) 带参数信号与槽
在subwidget.h中声明一个signal. 和之前的信号函数重名但是有参数: void backSignal(QString); 之后在subwidget.cpp的槽函数sendSignal() ...
- ajaxFileUpload带参数提交(亲测可用)
使用ajaxFileUpload上传文件时,有时需要带参数提交,网上有很多资料说使用data,但其实要使用data带参数是需要修改的,否则后台是获取不到的. 分析原因: ajaxFileUpload为 ...
- SpringMVC使用MultipartFile文件上传,多文件上传,带参数上传
一.配置SpringMVC 二.单文件与多文件上传 三.多文件上传 四.带参数上传 一.配置SpringMVC 在spring.xml中配置: <!-- springmvc文件上传需要配置的节点 ...
- ngResource提交json数据如何带参数
ngResource提交json数据如何带参数 直接使用ngResource和REST服务接口交互可以让程序显得简洁,前提是配置好跨域和OPTIONS请求的支持,与此同时,如果需要带些额外的参数,有两 ...
随机推荐
- AIC与BIC
首先看几个问题 1.实现参数的稀疏有什么好处? 一个好处是可以简化模型.避免过拟合.因为一个模型中真正重要的参数可能并不多,如果考虑所有的参数作用,会引发过拟合.并且参数少了模型的解释能力会变强. 2 ...
- asp.netMVC4使用Bootstrap4
使用: 添加: <script src="../../Scripts/jquery-1.7.1.min.js" type="text/javascript" ...
- mysql定时器设置开机默认自启动
1).查询mysql安装位置:show variables like "%char%"; 2).查询定时器是否开启: -查询定时器状态:show VARIABLES LIKE '% ...
- python序列化与反序列化(json与pickle)
在python中,序列化可以理解为将python中对象的编码格式转换为json(pickle)格式的字符串,而反序列化可以 理解为将json(pickle)格式的字符串转换为python中对象的编码格 ...
- Element-UI标签页el-tabs组件的拖动排序实现
ElementUI的标签页组件支持动态添加删除,如下图: 但是这个组件不支持标签之间的拖动排序.那么我们自己怎样实现这个功能呢? 有一个叫vuedraggable的组件(https://github. ...
- 「JavaScript面向对象编程指南」原型
在 JS 中,函数本身也是一个包含了方法(如apply和call)和属性(如length和constructor)的对象,而prototype也是函数对象的一个属性 function f(){} f. ...
- python使用pip 18以上版本离线安装package
在内网办公环境,常常需要使用离线安装python的软件包. 一般都会先在互联网的电脑上下载,再拷贝到内网办公机器上进行离线安装. 一般来说,我是这样做的: 1.拷贝和外网电脑上版本一致,且32位或64 ...
- dash视频服务器本地搭建 (初探)
2019-4-17 15:54:17 星期三 技术说明: dash: 将一个大视频分解成不同分辨率, 不同清晰度的小视频, 以及一个描述文件(后缀: mpd), 根据网络带宽自动调整视频流, 看起来更 ...
- selenium启动报错“ incorrect JSON status mapping for 'unknown error' (500 expected)”
前面讲了工程启动报错“selenium启动报错Unable to read VR Path Registry from C:\Users\clinva\AppData\Local\openvr\ope ...
- 利用Owin解决CORS报错问题
我的项目是vue + ASP.NET .在 Vue调试时,由于vue开启的调试用的服务器端口号 和 后台.NET程序的端口号是不同的,发送Ajax请求时,就会报错.这里就不提报错的原因了,网上有很多, ...