我有这条卷曲卷,它工作正常:
curl -X POST -F document=@name_of_document_with_json_inside.txt http://some_url/json/name?signature=bd87b1e4b679092a6946de0c6f623567
我想更改此内容并使用nodejs
发布我的json文档我目前的代码是:
var request = require('request');
var postData = { id: "12345", title: "Some title", url: "some-url" };
var clientServerOptions = {
uri: 'http://some_url/json/name?signature=bd87b1e4b679092a6946de0c6f623567',
body: postData,
json: true,
method: 'POST',
headers: {
'Content-Type': 'application/json'
}
}
request(clientServerOptions, function (error, response) {
console.log(error,response.body);
return;
});
从curl帮助我得到了-F用于表单,在我的卷曲中我有一个发布字段文档的命令:
-F/--form <name=content> Specify HTTP multipart POST data (H)
任何人都可以帮我解释如何指定文档字段并在其中发布我的json数据吗?
更新
postData包含:
{ id: "12345", title: "Some title", url: "some-url" }
这是name_of_document_with_json_inside.txt中的数据
有人告诉我,我需要这样做,比如发布带有name = document:
的textarea<textarea name="document">JSON BLA BLA BLA</textarea>
那么如何指定document =?
答案 0 :(得分:0)
这篇文章帮助了我:http://stackoverflow.com/questions/19818918/nodejs-sending-uploading-a-local-file-to-a-remote-server
var POST_DATA = 'data={['
已更改为:var POST_DATA = 'document={['
我甚至不必写文件并发布postData json代码
以下是完整的工作代码:
var http = require('http');
var postData = { id: "12345", title: "Some title", url: "some-url" };
var post_options = {
//host: 'logger.mysite.co.uk',
host: 'some_url',
path: '/json/name?signature=bd87b1e4b679092a6946de0c6f623567',
port: 80,
timeout: 120000,
method: 'POST',
}
var sender = http.request(post_options, function(res) {
if (res.statusCode < 399) {
var text = ""
res.on('data', function(chunk) {
text += chunk
})
res.on('end', function(data) {
console.log(text);
})
} else {
console.log("ERROR", res.statusCode)
}
});
var POST_DATA = 'document='
POST_DATA += postData
POST_DATA += ''
sender.write(POST_DATA);
sender.end();