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请求的支持,与此同时,如果需要带些额外的参数,有两 ...
随机推荐
- 【5】学习C++之类的概念
C++ 中的类(Class)可以看做C语言中结构体(Struct)的升级版.结构体是一种构造类型,可以包含若干成员变量,每个成员变量的类型可以不同:可以通过结构体来定义结构体变量,每个变量拥有相同的性 ...
- 2018-2019-2 20175306实验一《Java开发环境的熟悉》实验报告
2018-2019-2 20175306实验一<Java开发环境的熟悉>实验报告 一.实验内容及步骤 实验一 Java开发环境的熟悉-1 ·建立有自己学号的实验目录. ·通过vim Hel ...
- 机器学习基石10-Logistic Regression
注: 文章中所有的图片均来自台湾大学林轩田<机器学习基石>课程. 笔记原作者:红色石头 微信公众号:AI有道 上一节课介绍了Linear Regression线性回归,用均方误差来寻找最佳 ...
- openGL learning
1,basic env in linux : cmake_minimum_required(VERSION 2.8) project(CP_01) set(GLFW_HOME /home/gearsl ...
- SimpleDateFormat 常用用法
1.SimpleDateFormat函数语法: G 年代标志符 y 年 M 月 d 日 h ...
- LeetCode.数字转罗马数字
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并 ...
- python-装饰器&生成器&迭代器&推导式
一:普通装饰器 概念:在不改变原函数内部代码的基础上,在函数执行之前和之后自动执行某个功能,为已存在的对象添加某个功能 普通装饰器编写的格式 def 外层函数(参数) def 内层函数(*args,* ...
- 同时安装多个的Mysql的实现方法
首写修改my.ini文件 修改这几项即可 [client] port= [mysql] default-character-set=utf8 [mysqld] port= server_id= 全文如 ...
- pycharm 记录
一.pycharm字体放大.缩小的设置 File —> setting —> Keymap —>在搜寻框中输入:increase —> Increase Font Size(双 ...
- Spark 常规性能调优
1. 常规性能调优 一:最优资源配置 Spark性能调优的第一步,就是为任务分配更多的资源,在一定范围内,增加资源的分配与性能的提升是成正比的,实现了最优的资源配置后,在此基础上再考虑进行后面论述的性 ...