delphi Clever Internet控件TclHttp实现http ContentType 的 multipart/form-data

最近,实现一个网站的登录查询。遇到 multipart/form-data 数据提交。

POST /admin/api/common/syslogin HTTP/1.1
Host: xxx.xx.xx.xxx
Connection: keep-alive
Accept: /
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.72 Safari/537.36 Edg/89.0.774.45
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary2J9pBdI8Br01PKAS
Origin: http://xxx.xxx.xx.xx.xxx
Referer: http://xxx.xx.xx.xxx/admin/common/index.html?userAccount=abcdef&token=dc9c536c-d894-4454-af2b-eee27316a49c&income=0&output=1&center=0&ying=0
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: token=eyJ1c2VyQWNjb3VudCI6IjgwODY5dGNrIiwidG9rZW4iOiJkYzljNTM2Yy1kODk0LTQ0NTQtYWYyYi1lZWUyNzMxNmE0OWMifQ==
Accept-Encoding: gzip, deflate
Content-Length: 278
------WebKitFormBoundary2J9pBdI8Br01PKAS
Content-Disposition: form-data; name=“token”
dc9c536c-d894-4454-af2b-eee27316a49c
------WebKitFormBoundary2J9pBdI8Br01PKAS
Content-Disposition: form-data; name=“userAccount”
abcdef
------WebKitFormBoundary2J9pBdI8Br01PKAS–

Clever Internet控件显然没有这个选项,测试几次失败。
以下为失败测试:

    strPOSTText := '------WebKitFormBoundary2J9pBdI8Br01PKAS' + #13#10
        + 'Content-Disposition: form-data; name="token"' + #13#10
        + #13#10
        +  strtoken + #13#10
        + '------WebKitFormBoundary2J9pBdI8Br01PKAS' + #13#10
        + 'Content-Disposition: form-data; name="userAccount"' + #13#10
        + #13#10
        + strUser
        + '------WebKitFormBoundary2J9pBdI8Br01PKAS--';  
    clHttpRequest.Header.ContentType := 'multipart/form-data; boundary=------WebKitFormBoundary2J9pBdI8Br01PKAS';

    clHttpRequest.ClearItems;
    clHttpRequest.AddTextData(strPOSTText);
    response := TMemoryStream.Create();

    clHttp1.Post(strURL,clHttpRequest,response);

返回失败。
再次对原提交网络监听分析发现
POST数据结构如下:
token dc9c536c-d894-4454-af2b-eee27316a49c 36
userAccount abcdef 8

改用经典的POST方式,OK提交成功。
代码如下

    clHttpRequest.ClearItems;
    clHttpRequest.AddFormField('token',‘dc9c536c-d894-4454-af2b-eee27316a49c                        36’);
    clHttpRequest.AddFormField('userAccount',‘abcdef’);
    response := TMemoryStream.Create();

    clHttp1.Post(strURL,clHttpRequest,response);

返回:
{“loginuser”:{“userzh”:“80869tck”,“input_username”:“测试”},“rtnMsg”:“登录成功!”,“rtnCode”:“0000”}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Clever Internet Suite是一套非常强大的软件开发工具包,用于帮助开发人员在各种网络应用程序快速构建和实现功能。该套件提供了许多强大的组件和类,可以轻松地处理各种网络任务,如连接到远程服务器,发送和接收数据,处理HTTP请求等。 Clever Internet Suite v9.6是该套件的最新版本,它引入了一些新功能和改进,以提供更好的性能和更强大的功能。其一些新功能包括: 1. 强化的TLS/SSL支持:通过使用最新的TLS和SSL协议版本,增强了对加密和安全的支持,确保数据传输的保密性和完整性。 2. 增强的HTTP功能:添加了对HTTP/2协议的支持,支持HTTP/1.1和HTTP/2请求和响应,以及更好的流水线请求管理。 3. 改进的FTP和SFTP支持:增加了对FTP和SFTP协议的更好支持,可以轻松地进行文件传输和远程文件管理。 4. 新的邮件组件:引入了新的邮件组件,支持发送和接收电子邮件,并提供了更好的电子邮件管理功能。 5. 新的编码和压缩功能:增加了对GZIP和Deflate压缩格式的支持,以及对Base64和Quoted-printable等编码格式的支持。 总的来说,Clever Internet Suite v9.6是一款功能强大且易于使用的软件开发工具包,为开发人员提供了构建各种网络应用程序所需的一切功能和组件。无论是创建一个简单的客户端应用程序还是一个复杂的服务器应用程序,该套件都能满足开发人员的需求,帮助他们快速实现功能并提供优质的用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值