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给服务器即可

时间: 2024-12-14 08:22:53

idhttp提交post带参数并带上cookie的相关文章

Jmeter接口测试:带参数、带token

测试内容简介: 1.get请求,无参数 2.get请求,参数为第一条响应中的id 3.get请求,带token 结构图: 下面进行详解: 一.添加cookie管理器等 1.添加http cookie管理器,使用默认设置不需修改 2.添加http请求默认值,填写名称(如www.baidu.com).端口号(80).协议(http) 3.获取token token在登录接口返回的信息中,所以发送一个登录请求并从返回信息中提取所需要的token 3.1 使用的是外部文件进行参数化登录(如不明白请参照上

meter接口测试实例:带参数、带token

测试内容简介: 1.get请求,无参数 2.get请求,参数为第一条响应中的id 3.get请求,带token 结构图: 下面进行详解: 一.添加cookie管理器等 1.添加http cookie管理器,使用默认设置不需修改 2.添加http请求默认值,填写名称(如www.baidu.com).端口号(80).协议(http) 3.获取token token在登录接口返回的信息中,所以发送一个登录请求并从返回信息中提取所需要的token 3.1 使用的是外部文件进行参数化登录(如不明白请参照上

sql分页带参数,带排序等,动态实现的方法

USE [YQOBS] GO /****** Object: StoredProcedure [dbo].[PageList] Script Date: 11/06/2014 11:39:35 ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO ------------------------------------------------------------ -- --通用的分页存储过程 -- ---------------

http post 请求,带参数,带请求头

#!/usr/bin/env python # -*- coding: utf-8 -*- import requests import json url = 'http://................' body = {"type": "text", "content": "测试文本",} headers = {'content-type': "application/json"} #print t

elementUi——组件函数钩子自带参数,不能添加参数问题

在element-ui中的组件函数钩子一般都是自带参数如: //上传组件 <el-upload class="upload-demo" action="https://jsonplaceholder.typicode.com/posts/" :on-preview="handlePreview" :on-remove="handleRemove" :before-remove="beforeRemove&quo

SpringMVC使用MultipartFile文件上传,多文件上传,带参数上传

一.配置SpringMVC 在spring.xml中配置: <!-- springmvc文件上传需要配置的节点--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="-1&

httpclient 4.3 post form带参数,提交文件/二进制数据

HttpClient httpClient = HttpClients.createDefault(); HttpPost httppost = new HttpPost(url); MultipartEntityBuilder mEntityBuilder = MultipartEntityBuilder.create(); //byte[] postBody mEntityBuilder.addBinaryBody(postName, postBody); //提交文件 //File fil

js上传文件带参数,并且,返回给前台文件路径,解析上传的xml文件,存储到数据库中

ajaxfileupload.js jQuery.extend({ createUploadIframe: function(id, uri) { //create frame var frameId = 'jUploadFrame' + id; if(window.ActiveXObject) { var io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '&qu

论httpclient上传带参数【commons-httpclient和apache httpclient区别】

需要做一个httpclient上传,然后啪啪啪网上找资料 1.首先以前系统中用到的了commons-httpclient上传,找了资料后一顿乱改,然后测试 PostMethod filePost = new PostMethod(url); filePost.setParameter("system", "vinuxpost"); try { Part part[] = UploadRequestHelper.getPart(request); filePost.s