我對LINUX使用node.js很陌生。它只是我的第二天。我用捲曲請求使用node-curl。在下面的鏈接中,我找到了Get請求的示例。任何人都可以使用node-curl爲我提供Post請求示例。如何使用node-curl發佈數據?
https://github.com/jiangmiao/node-curl/blob/master/examples/low-level.js
我對LINUX使用node.js很陌生。它只是我的第二天。我用捲曲請求使用node-curl。在下面的鏈接中,我找到了Get請求的示例。任何人都可以使用node-curl爲我提供Post請求示例。如何使用node-curl發佈數據?
https://github.com/jiangmiao/node-curl/blob/master/examples/low-level.js
您需要使用setopt
,以便爲捲曲請求指定POST選項。您應該首先看到的選項是CURLOPT_POST
和CURLOPT_POSTFIELDS
。從libcurl documentation從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
... [這]應該是完整的數據在HTTP POST操作後。您必須確保數據的格式與您希望服務器接收數據的方式相同。 libcurl不會爲你轉換或編碼。大多數網絡服務器會假定這些數據是經過網址編碼的。
此POST是一個普通的應用程序/ x-www-form-urlencoded類(當使用此選項時,libcurl將默認設置Content-Type),這是HTML表單最常用的一種。另請參閱CURLOPT_POST。使用CURLOPT_POSTFIELDS意味着CURLOPT_POST。
如果你想做一個零字節的POST,你需要明確地將CURLOPT_POSTFIELDSIZE設置爲零,就像簡單地將CURLOPT_POSTFIELDS設置爲NULL或者「」只是有效地禁止發送指定的字符串。相反,libcurl會假設您將使用讀取回調來發送POST數據!
有了這些信息,你應該能夠將以下選項添加到低級別的例子有它做一個POST請求:
var fieldsStr = '{}';
curl.setopt('CURLOPT_POST', 1); // true?
curl.setopt('CURLOPT_POSTFIELDS', fieldsStr);
您將需要調整的內容fieldsStr
以匹配服務器預期的格式。根據文檔,您可能還需要對數據進行網址編碼 - 這應該與根據this post使用encodeURIComponent
一樣簡單。
怎麼樣發佈塊的數據塊,因爲我必須處理巨大的數據(500 MB可能)。任何幫助.. – Somnath 2013-04-05 13:21:00
這會很棘手 - 你確定你想用HTTP來代替不同的協議嗎?如果您需要使用HTTP,您可能需要查看使用多部分上傳:http://stackoverflow.com/questions/788877/what-is-a-multipart-http-post-and-how-to-make -IT-scribd – 2013-04-05 13:48:30