将curl请求转换为http请求?
我正试图将下面的curl请求转换为postman工具的HTTP请求。 邮递员工具在这个问题上可能并不重要。 请告诉我如何将curl转换为http。
curl -X POST -i 'https://a-webservice.com' -H X-apiKey:jamesBond007 -d MESSAGE-TYPE="pub.controller.user.created" -d PAYLOAD='a json object goes here!'
我试过/学到了什么: - 设置标题content-type:json / application,X-apiKey
邮差让我设置请求正文仅使用4个选项中的一个 - 形式数据,x-www-form-urlencoded,raw,binary。 你能告诉我如何将curl的两个-d选项转换为这些选项吗?
我很困惑如何把它放在一起。
谢谢!
application/x-www-form-urlencoded
数据的格式与查询字符串的格式相同,因此:
MESSAGE-TYPE=pub.controller.user.created&PAYLOAD=a json object goes here!
为了确认这一点,你可以使用--trace-ascii
选项将curl
本身的请求数据转储出来:
curl --trace-ascii - -X POST -i 'https://a-webservice.com'
-H X-apiKey:jamesBond007 -d MESSAGE-TYPE="pub.controller.user.created"
-d PAYLOAD='a json object goes here!'
--trace-ascii
将一个文件名作为参数,但如果你给它-
它会转储到stdout
。
上述调用的输出将包含如下内容:
=> Send header, 168 bytes (0xa8)
0000: POST / HTTP/1.1
0011: Host: example.com
0024: User-Agent: curl/7.51.0
003d: Accept: */*
004a: X-apiKey:jamesBond007
0061: Content-Length: 73
0075: Content-Type: application/x-www-form-urlencoded
00a6:
=> Send data, 73 bytes (0x49)
0000: MESSAGE-TYPE=pub.controller.user.created&PAYLOAD=a json object g
0040: oes here!
== Info: upload completely sent off: 73 out of 73 bytes
因此,与将curl请求转换为http请求的答案中确认的内容相同? 使用nc
,但使用curl
自身确认,使用--trace-ascii
选项。
我对邮差不太了解。 但是我捕获了一个名为/tmp/ncout
的文件。 基于此,我们看到正在发送的Content-Type是application/x-www-form-urlencoded
,并且您发送的有效内容为MESSAGE-TYPE=pub.controller.user.created&PAYLOAD=a json object goes here!
。
这有帮助吗?
alewin@gobo ~ $ nc -l 8888 >/tmp/ncout 2>&1 </dev/null &
[1] 15259
alewin@gobo ~ $ curl -X POST -i 'http://localhost:8888/' -H X-apiKey:jamesBond007 -d MESSAGE-TYPE="pub.controller.user.created" -d PAYLOAD='a json object goes here!'
curl: (52) Empty reply from server
[1]+ Done nc -l 8888 > /tmp/ncout 2>&1 < /dev/null
alewin@gobo ~ $ cat /tmp/ncout
POST / HTTP/1.1
Host: localhost:8888
User-Agent: curl/7.43.0
Accept: */*
X-apiKey:jamesBond007
Content-Length: 73
Content-Type: application/x-www-form-urlencoded
MESSAGE-TYPE=pub.controller.user.created&PAYLOAD=a json object goes here!alewin@gobo ~ $
以下是如何使用python执行此urlencode的示例:
Python 2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
> data = {'MESSAGE-TYPE': "pub.controller.user.created", 'PAYLOAD': 'a json object goes here!'}
> from urllib import urlencode
> urlencode(data)
PAYLOAD=a+json+object+goes+here%21&MESSAGE-TYPE=pub.controller.user.created
链接地址: http://www.djcxy.com/p/48877.html