RP - 发布表单数据未正确传递给服务
RP - Posting formdata not passing correctly to service
我需要传递带有 formdata 的文件和用 java 编写的服务器应该收到如下内容
public 响应 uploadFileWithMetadata(ObjectMetadata objectMetadata, MultipartBody multipartBody) {}
下面是客户端代码,我传递的是作为 null 的 objectMetadata 发送,multipartBody 数组有 2 个值,一个带有文件,另一个带有 objectMetadata,服务不接受它作为有效输入。服务器端接收到的 ObjectMetadata 应该是 application/json 并且我在表单数据中设置了它。但这是作为 text/plain 收到的,我怀疑这是导致问题的原因
var options = {
method: 'POST',
uri: url,
formData: {
objectMetadata: {value: JSON.stringify(inputToPass),options:{'Content-Type': 'application/json'}},
file1: fs.createReadStream('/Users/mohansee/Desktop/Node_drekar_setup.docx')
}
};
rp(options)
.then(function (body) {
console.log('inside success'); console.log(body)
}) .catch(function (err) {
console.log('inside error');
console.log(err);
});
请检查并告知我是否在数据部分遗漏了需要作为单独参数传递的内容
更改 formData 并添加 header 解决了问题
formData: {
objectMetadata: {
value: inputToPass,
options: {
contentType: 'application/json'
}
},
file1: {
value: fs.createReadStream('Node_drekar_setup.docx'),
options: {
contentType: 'multipart/form-data'
}
}
}
我需要传递带有 formdata 的文件和用 java 编写的服务器应该收到如下内容
public 响应 uploadFileWithMetadata(ObjectMetadata objectMetadata, MultipartBody multipartBody) {}
下面是客户端代码,我传递的是作为 null 的 objectMetadata 发送,multipartBody 数组有 2 个值,一个带有文件,另一个带有 objectMetadata,服务不接受它作为有效输入。服务器端接收到的 ObjectMetadata 应该是 application/json 并且我在表单数据中设置了它。但这是作为 text/plain 收到的,我怀疑这是导致问题的原因
var options = {
method: 'POST',
uri: url,
formData: {
objectMetadata: {value: JSON.stringify(inputToPass),options:{'Content-Type': 'application/json'}},
file1: fs.createReadStream('/Users/mohansee/Desktop/Node_drekar_setup.docx')
}
};
rp(options)
.then(function (body) {
console.log('inside success'); console.log(body)
}) .catch(function (err) {
console.log('inside error');
console.log(err);
});
请检查并告知我是否在数据部分遗漏了需要作为单独参数传递的内容
更改 formData 并添加 header 解决了问题
formData: {
objectMetadata: {
value: inputToPass,
options: {
contentType: 'application/json'
}
},
file1: {
value: fs.createReadStream('Node_drekar_setup.docx'),
options: {
contentType: 'multipart/form-data'
}
}
}