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请求的支持,与此同时,如果需要带些额外的参数,有两 ...
随机推荐
- Basic 001 Bob
Instructions Bob is a lackadaisical teenager. In conversation, his responses are very limited.Bob an ...
- 【译】使用 Flutter 实现跨平台移动端开发
作者: Mike Bluestein | 原文地址:[https://www.smashingmagazine.com/2018/06/google-flutter-mobile-developm ...
- react 中使用阿里彩色图标
1. 不光要引入css ,还要引入js 2. 在需要引入icon的地方添加 <svg className={styles.menuIcon} aria-hidden="true&quo ...
- E: Unable to locate package clang-7 E: Unable to locate package clang++-7 E: Couldn't find any package by regex 'clang++-7'
我的系统是Debian 9.8, 然后在装下面这两个包的时候老是提示找不到.然后再github上一问,过了几分钟就有大佬回复了,而且亲测有效 ~$ sudo apt-get -y install cl ...
- 读spring源码(二)-XmlBeanDefinitionReader-解析BeanDefinition
上次说到ApplicationContext加载BeanDefinition时会创建一个XmlBeanDefinitionReader,将XML解析.BeanDefinition加载委托给XmlBea ...
- git知识总结-2.git基本操作之操作汇总
0.前言 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 上图分别为: Workspace:工作区 Index / Stage:暂存区 Reposito ...
- osgearth介绍
osgEarth为开发osg应用提供了一个地理空间SDK和地形引擎. osgEarth的目标: l 提供基于osg开发3D地理空间应用的支持; l 直接从数据源可视化地形模型和影像变得更加简单: l ...
- mysql windows 安装 错误
1 免压缩版安装会经常提示需要c++库,还是要用安装版. 2 安装板默认在c盘,修改目录要注意目录权限. 3 要把datadir的data目录全部考到新目录下.
- 统计信息不准导致sql性能下降
某局的预生产系统一条sql语句20分钟执行完,上线以后2个小时没执行出来,在预生产执行计划是hash join在生产是nested loop,通过awr基表wri$_optstat_tab_histo ...
- leveldb(ssdb)性能、使用场景评估
最近有个业务场景存储压力很大,写远远大于读,读也集中在最近写入,想想这不很适合采用leveldb存储么.leveldb的话好像用ssdb比较多,花了两天时间就ssdb简单做下测试,以下总结. ssdb ...