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

我对LINUX使用node.js很陌生。 它只是我的第二天。 我使用节点curlcurl请求。 在下面的链接中,我find了Get请求的例子。 任何人都可以使用node-curl为我提供Post请求示例。

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

您需要使用setopt才能为cURL请求指定POST选项。 您应该首先查看的选项是CURLOPT_POSTCURLOPT_POSTFIELDS 。 从链接到node-curl的libcurl文档 :

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。 使用callback提供数据时,必须使用分块传输编码来传输数据,或者必须使用CURLOPT_POSTFIELDSIZE或CURLOPT_POSTFIELDSIZE_LARGE选项来设置数据的大小。 要启用分块编码,只需传入相应的Transfer-Encoding标头,请参阅post-callback.c示例。

CURLOPT_POSTFIELDS

… [这]应该是完整的数据发布在HTTP POST操作。 您必须确保数据的格式与您希望服务器接收数据的方式相同。 libcurl不会为你转换或编码。 大多数networking服务器会假设这些数据是由url编码的。

这个POST是一个普通的application / x-www-form-urlencodedtypes(当使用这个选项时,libcurl会默认设置Content-Type),这是HTML表单最常用的一种。 另见CURLOPT_POST。 使用CURLOPT_POSTFIELDS意味着CURLOPT_POST。

如果要执行零字节POST,则需要将CURLOPT_POSTFIELDSIZE显式设置为零,只需将CURLOPT_POSTFIELDS设置为NULL或“”,即可有效地禁用发送指定的string。 libcurl将会假设你将使用readcallback来发送POST数据!


有了这些信息,您应该可以将下列选项添加到低级示例中,以使其发出POST请求:

 var fieldsStr = '{}'; curl.setopt('CURLOPT_POST', 1); // true? curl.setopt('CURLOPT_POSTFIELDS', fieldsStr); 

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