如何使用node-curl发布数据?

Som*_*ath 4 post curl node.js npm

我对使用node.js的LINUX很新.这只是我的第二天.我使用node-curl进行curl请求.在下面的链接中,我找到了Get请求的示例.任何人都可以使用node-curl为我提供Post请求示例.

https://github.com/jiangmiao/node-curl/blob/master/examples/low-level.js

Jus*_*ier 5

您需要使用setopt以便为cURL请求指定POST选项.你应该首先考虑的选项是CURLOPT_POSTCURLOPT_POSTFIELDS.从以下链接的libcurl文档node-curl:

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);
Run Code Online (Sandbox Code Playgroud)

您需要调整内容fieldsStr以匹配服务器所期望的格式.根据文档,您可能还需要对数据进行url编码 - 这应该像encodeURIComponent根据这篇文章一样简单.