我对使用node.js的LINUX很新。这只是我的第二天。我使用node-curl作为curl请求。在下面的链接中,我找到了Get请求的示例。任何人都可以使用node-curl为我提供Post请求示例。
https://github.com/jiangmiao/node-curl/blob/master/examples/low-level.js
答案 0 :(得分:5)
您需要使用setopt
来指定cURL请求的POST选项。您应首先考虑的选项是CURLOPT_POST
和CURLOPT_POSTFIELDS
。来自node-curl
链接的libcurl documentation:
CURLOPT_POST
设置为1的参数告诉库执行常规HTTP发布。这也将使库使用“Content-Type:application / x-www-form-urlencoded”标题。 (这是迄今为止最常用的POST方法)。
使用CURLOPT_POSTFIELDS或CURLOPT_COPYPOSTFIELDS选项之一指定要发布的数据和CURLOPT_POSTFIELDSIZE或CURLOPT_POSTFIELDSIZE_LARGE来设置数据大小。
或者,您可以使用CURLOPT_READFUNCTION和CURLOPT_READDATA选项向POST提供数据,但是您必须确保不将CURLOPT_POSTFIELDS设置为除NULL之外的任何值。使用回调提供数据时,必须使用分块传输编码进行传输,或者必须使用CURLOPT_POSTFIELDSIZE或CURLOPT_POSTFIELDSIZE_LARGE选项设置数据大小。要启用分块编码,只需传入相应的Transfer-Encoding标头,请参阅post-callback.c示例。
CURLOPT_POSTFIELDS
... [this]应该是在HTTP POST操作中发布的完整数据。您必须确保数据的格式与服务器接收数据的方式相同。 libcurl不会为您转换或编码。大多数Web服务器都会假设这些数据是url编码的。
此POST是一种普通的application / x-www-form-urlencoded类型(当使用此选项时,libcurl将默认设置Content-Type),这是HTML表单最常用的一种。另请参见CURLOPT_POST。使用CURLOPT_POSTFIELDS意味着CURLOPT_POST。
如果要进行零字节POST,则需要将CURLOPT_POSTFIELDSIZE显式设置为零,因为只需将CURLOPT_POSTFIELDS设置为NULL或“”只是有效地禁用指定字符串的发送。相反,libcurl会假设你将使用read回调发送POST数据!
使用该信息,您应该能够将以下选项添加到低级示例中,以使其发出POST请求:
var fieldsStr = '{}';
curl.setopt('CURLOPT_POST', 1); // true?
curl.setopt('CURLOPT_POSTFIELDS', fieldsStr);
您需要调整fieldsStr
的内容以匹配服务器所期望的格式。根据文档,您可能还需要对数据进行网址编码 - 这应该像根据this post使用encodeURIComponent
一样简单。