将Curl转换为简单的HTTP请求?
2015-2-4 21:58:47
收藏:0
阅读:83
评论:3
我有一些 curl 请求,我想从中构建一个基本的 POST 请求(带有头等身份验证信息等),我找不到任何可以转换它的工具:
curl -X POST 'https://api.twilio.com/2010-04-01/Accounts/xxxxxxxxxxxxx/Calls.json' \
--data-urlencode 'To=xxxxxxx65542' \
--data-urlencode 'From=+xxxxxxx4215' \
-d 'Url=https://api.twilio.com/2010-04-01' \
-d 'Method=GET' \
-d 'FallbackMethod=GET' \
-d 'StatusCallbackMethod=GET' \
-d 'Record=false' \
-u ACbe68cddxxxxxxxxxxxx3aba243cc4cdb:0f442xxxxxxxxxxxxxxxxxxx
那么我的 POST 请求应该长什么样?
点赞
用户4528104
你可以用 --header 指定标题,用 -X / --request 参数指定请求类型(POST)。
例如:
curl --request POST --header "X-MyHeader: MyAuthenticatedHeader" www.stackoverflow.com
在你的情况下应该这样做:
curl -X POST 'https://api.twilio.com/2010-04-01/Accounts/xxxxxxxxxxxxx/Calls.json' \
--header 'X-MyHeader: MyAuthenticatedHeader' \
--data-urlencode 'To=xxxxxxx65542' \
--data-urlencode 'From=+xxxxxxx4215' \
-d 'Url=https://api.twilio.com/2010-04-01' \
-d 'Method=GET' \
-d 'FallbackMethod=GET' \
-d 'StatusCallbackMethod=GET' \
-d 'Record=false' \
-u ACbe68cddxxxxxxxxxxxx3aba243cc4cdb:0f442xxxxxxxxxxxxxxxxxxx
2015-02-04 10:59:00
用户4954924
好的,我正在尝试从ESP8266 NodeMcu v0.9模块发送短信文本。它能够像在Arduino IDE 1.6.4中一样工作。
无论如何,我发现http://textbelt.com只显示了一个简单的CURL方式发送文本消息。
这是它要求您发送的CURL消息
$ curl -X POST http://textbelt.com/text \ -d number=5551234567 \ -d "message=I sent this message for free with textbelt.com"
所以为了转换为正常的HTTP POST命令,我做了以下操作。(这在Arduino IDE中有效) 号码和消息都是字符串对象。
String messageToSend = "number="+number+"&message="+message;
client.print("POST /text HTTP/1.1\r\n");
client.print("Host: textbelt.com\r\n");
client.print("Content-Type: application/x-www-form-urlencoded\r\n");
client.print("Content-Length: ");
client.print(messageToSend.length());
client.print("\r\n\r\n");
client.print(messageToSend);
起初我试图没有Content-Type,但似乎不起作用。因此,我还需要添加我发送的内容类型。
如果您使用WireShark等监视网络流量,您会看到
POST /text HTTP/1.1\r\n
Host: textbelt.com\r\n
Content-Type: application/x-www-form-urlencoded\r\n
Content-Length: 48\r\n
\r\n
number=5551234567&message=this is a text message
我可能可以使用text/plain作为内容类型来使用更少的文本,但我认为它可能需要应用程序urlencoded类型才能正常工作。
希望这对正在尝试将CURL转换为HTTP的其他人有所帮助。
2015-05-29 22:31:51
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
从cURL手册中:
Amazon AWS在身份验证方面大量使用标头。快速谷歌应该会导致许多示例,例如来自http://tmont.com/blargh/2014/1/uploading-to-s3-in-bash 的此类示例:
curl -X PUT -T "${file}" \ -H "Host: ${bucket}.s3.amazonaws.com" \ -H "Date: ${dateValue}" \ -H "Content-Type: ${contentType}" \ -H "Authorization: AWS ${s3Key}:${signature}" \ https://${bucket}.s3.amazonaws.com/${file}您只需调整AWS示例以适用于您的Twilio即可。
要将示例转换为POST,只需将PUT更改为POST并添加您的POST字段 -d“field1=val1&field2=val2&field3=val3”