我在使用Node.js编写的休眠客户端能够将数据(通过GET)发送到基于ServiceStack JSON的服务时遇到问题。它给了我一个序列化错误。但是,我已经将相同的JSON(由我的Node.js rest客户端生成)复制并粘贴到通过CURL发送的ServiceStack服务调用中,而ServiceStack没有出现JSON问题 - 再次...仅作为只要它来自CURL。
任何人都可以提出的任何指示或进一步的启示都将非常感激!
谢谢,
塔米
答案 0 :(得分:6)
所以我想出了如何在Node.js中使用上述工作,而不仅仅是在CURL中(向ServiceStack JSON服务发送/接收JSON)。
我做了以下事情:
使用" get()" restler的方法...不要使用" json()"方法
(代码片段如下......)
var obj = {};
obj.objectName = 'foo';
obj.foos = [{firstname: 'foo1', lastname: 'foo-you'}, {firstname: 'foo2', lastname: 'foo-you-2'}];
var json = JSON.stringify(obj);
var options = {
method: "get",
data: json,
headers: {'Content-type': 'application/json', 'Accept': 'application/json'}
};
rest.get('http://localhost/servicestack-api/getmethod', options).
on('complete', function(data, response){
console.log(data);
console.log(response.statusCode);
});
请务必使用正确的网址和远程DTO向您的ServiceStack服务和方法填写以上内容
<强> FYI 强>
如果你的json没有在ServiceStack中序列化到远程DTO,一种快速的测试方法是复制并粘贴存储在&#34; json&#34;中的json。将变量放在curl命令中以查看它是否以这种方式正确序列化 (下面的示例卷曲片段......)
这是我最初做的(见原始问题)试图解决序列化问题。它帮助我将问题隔离到restler / Node.js端,这样我就可以进行上面看到的修改 - 即不使用&#34; json()&#34;解决方法。
curl -v -H "Accept: application/json" -H "Content-type: application/json" -X GET -d '{"foos":[{"firstname":"foo1","lastname":"foo-you"}, {"firstname": "foo2", "lastname": "foo-you-2"}],"objectName": "foo"}' http://localhost/servicestack-api/getmethod