Curl是否转换为简单的http请求?

Curl是否转换为简单的http请求?,http,post,curl,lua,Http,Post,Curl,Lua,我有一些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-

我有一些
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请求应该是什么样子呢?

来自cURL手册页:

-H、 --标头(HTTP)获取网页时要使用的额外标头。您可以指定任意数量的额外标头。请注意,如果 应添加一个自定义标头,该标头与 curl将使用的内部标题,外部设置的标题将是 用来代替内部的。这可以让你甚至 比curl更棘手的东西也不会做。你不应该替换 在内部设置标题,而不完全清楚自己在做什么 做。通过更换内部集管(无需更换),拆下内部集管 冒号右侧的内容,如:-H“主机:”。如果你发送 如果自定义标头没有值,则必须终止其标头 使用分号,如-H“X-Custom-Header;”发送 “X-Custom-Header:”

curl将确保您添加/替换的每个标题都与 正确的行尾标记,因此不应将其添加为 标题内容:不要添加换行符或回车符,它们会 只会把事情搞砸

另请参见-A、-user-agent和-e、-referer选项

此选项可多次用于添加/替换/删除多个 标题

AmazonAWS大量使用头进行身份验证。一个快速的谷歌应该可以从以下几个方面获得很多例子:

您所需要做的就是根据您的twilio使用改编AWS示例


要将示例制作成POST,只需将PUT更改为POST并添加POST字段-d“field1=val1&field2=val2&field3=val3”

您可以使用
--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

好的,我想知道如何从ESP8266 nodeMcu v0.9模块发送短信。使用arduino ide 1.6.4,它可以像arduino一样工作

总之,我发现它只显示了一种发送短信的简单方式

这是它希望您发送的CURL消息

$ curl -X POST http://textbelt.com/text \ -d number=5551234567 \ -d "message=I sent this message for free with textbelt.com"
因此,为了转换为正常的HTTPPOST命令,我执行了以下操作。(这在Arduino IDE中工作) number和message是字符串对象

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);
起初我尝试不使用内容类型,但似乎不起作用。所以我不得不添加我发送的内容类型

如果你用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的人。

我不确定您的答案的底线是什么。我的请求到底有多像???@Curnelious请澄清您的问题。如果我的回答不正确,那么很明显,我不确定你想问什么?你只是再次向我展示了同样的东西,我不明白从你的回答中我的post请求应该是什么样子?上面的curl代码正是你想要的。-X POST用于发出POST请求,--header'yourheaders'用于发送头。您正在寻找PHP代码吗?或者您只是在使用命令行curl。如果您使用的是命令行,那么以上内容就足够了。如果你在你的PHP或ASP.net应用程序中使用它,那么你应该改变你的问题。我有一些api,它向我展示了一个curl代码来做一些事情。然后,我有一些硬件设备,它应该发送一个POST请求,但它没有运行curl,所以我必须使用curl代码,并从中生成一个完整的POST请求,例如,我可以在以下站点中运行:。那么,我将如何使用这个curl代码,并从中创建正确的字段,以便使用该网站发送请求呢?下次请澄清确切的场景。你的问题没有提到lua&你的情况很复杂。现在您将使用哪种编程语言?如果您还打算使用lua,那么硬件必须有一个API来处理,您必须使用该API来获取POST请求,然后使用像“LuaCURL”这样的curl库,而不是使用运行请求。现在,不要问如何与该API交互,请查看它的文档。您能澄清一下您试图将上述curl请求转换为什么吗?不太清楚。我有一些api,它向我展示了一个curl代码来做一些事情。然后,我有一些硬件设备,应该发送一个POST请求,但它没有运行curl,所以我必须使用curl代码,并从中生成一个完整的基本POST请求,例如,我可以在以下站点中运行:。那么,我如何获取这个curl代码,并从中创建正确的字段,以便使用该网站发送请求呢?例如,您有一个无法运行curl的硬件设备,您希望从该设备发出HTTP请求?我有这个权利吗?硬件设备运行的是哪种平台或编程语言?@DevinRader是的。它运行lua..lua本身没有网络IO,所以您必须使用外部库。那你用哪一个?也许你可以用卷曲装订?
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