最近,实现一个网站的登录查询。遇到 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”}

最近,实现一个网站的登录查询。遇到 multipart/form-data 数据提交。POST /admin/api/common/syslogin HTTP/1.1Host: xxx.xx.xx.xxxConnection: keep-aliveAccept: /X-Requested-With: XMLHttpRequestUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Clever Internet SuiteV10 全部源码 示例 帮助 支持Delphi7-RAD Studio Alexandria11 delphi下优秀的开源网络组件集 Downloading, uploading and submitting of the Internet-resources. Sending and receiving MIME messages. HTTP, FTP, SFTP, SMTP, POP3, IMAP and NNTP client / server components. SSL / TLS / SSH channel with digital certificates support.
无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。 首先来了解什么是multipart/form-data请求: 根据http/1.1 rfc 2616的协议规定,我们的请求方式只有OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE等,那为为何我们还...
最近在学习红宝书第四版24章节 的xhr部分,提到了XMLHttpRequest Level 2的FormData 类型。以前只是有个印象,现在来仔细的了解一下: 现代 Web 应用程序中经常需要对表单数据进行序列化,因此 XMLHttpRequest Level 2 新增了 FormData 类型。 FormData 类型便于表单序列化,也便于创建与表单类似格式的数据然后通过 XHR 发送。下面的代码创建了一个 FormData 对象,并填充了一些数据: let data = new F...
开始前,先看下要实现的微信接口,上传多媒体文件,这个接口是用Form表单形式上传的文件。对我来说,对http的Form表单一知半解,还好,查到这个资料,如果你也和我一样,必须看看这篇文章。 在xalion窑主的指导下,我使用了indy自带的TIdMultiPartFormDataStre am类,来提交上传的文件。 如果使用indy的idhttp,则调用这个方法,即可以提交For...
这是什么? 该项目包含由Clever Cloud制造的Web组件的集合。 其中一些组件是较低级别的,例如<cc> , <cc>或<cc> ,其他组件则更高级并且特定于Clever Cloud的域模型。 我们在不同的Web UI(公共和内部)上使用它们。 为什么公开? 我们想与我们分享使用Web组件的知识和经验,以及用于构建它们的工具。 我们希望它能帮助其他人使用自己的组件。 我们自己使用这些组件,但是我们也希望我们的客户和合作伙伴在基于我们产品的自定义Web UI中使用它们。
delphi XE应用Restful时Rest组件的delphi XE ContentTypedelphi XE mime type怎样获取和表达 一、usesREST.Types; //var //DefaultRESTRequestParameterKind: TRESTRequestParameterKind = TRESTRequestParameterKind.pkGETor...