我有以下指向我的服务的CURL请求:
curl -X POST \
http://go.example.com/ \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'Postman-Token: cf0c1ab5-08ff-1aa2-428e-24b855e1a61c' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-F fff=vvvvv \
-F rrrr=ddddd \
-F xx=something
我试图抓住经典ASP代码中的xx参数。 我尝试了“ Request(“ xx”)'和'Request.Form(“ xx”)'。
你有什么主意吗?
答案 0 :(得分:2)
-F,--form
(HTTP SMTP IMAP)对于HTTP协议系列,它可以使curl模仿用户按下提交按钮时所填写的表单。 这会导致卷曲,从而根据RFC 2388使用Content-Type multipart / form-data 。
使用内容类型为multipart/form-data
的表单将表单提交到Classic ASP时,唯一可用的方法是Request.BinaryRead()
,因为Request.Form
用于application/x-www-form-urlencoded
数据。
以下是调用Request.BinaryRead()
入门的快速示例:
<%
'Should be less than configured request limit in IIS.
Const maxRequestSizeLimit = ...
Dim dataSize: dataSize = Request.TotalBytes
Dim formData
If dataSize < maxRequestSizeLimit Then
'Read bytes into a SafeArray
formData = Request.BinaryRead(dataSize)
'Once you have a SafeArray its up to you to process it.
...
Else
Response.Status = "413 PAYLOAD TOO LARGE"
Response.End
End If
%>
如果您仍要使用Request.Form
,可以通过使用-d
而不是-F
在CURL命令中指定表单参数来完成。来自the documentation;
-d,--data
(HTTP)将POST请求中的指定数据发送到HTTP服务器,就像用户填写HTML表单并按Submit按钮时浏览器所做的一样。 这将导致curl使用内容类型application / x-www-form-urlencoded将数据传递到服务器。与-F,-form进行比较。
因此CURL命令类似于;
curl -X POST \
http://go.mytest-service.com/ \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d fff=vvvvv \
-d rrrr=ddddd \
-d xx=something
然后您将使用以下方法在Classic ASP中检索xx
参数
<%
Dim xx: xx = Request.Form("xx")
%>