cURL POST数据到Service Stack没有被反序列化为Request对象

时间:2013-12-04 01:26:46

标签: web-services rest curl servicestack

我正在使用Service Stack来托管一些REST Web服务。我可以使用soapUI调用Web服务,并且数据被正确地发送和反序列化到我的请求对象。但是,当我尝试使用cURL时,请求对象完全为空。

我查看了服务堆栈代码,我认为问题出在RestHandler.cs的某个地方,当它获取请求参数并创建请求对象时。请求中似乎没有任何可以反序列化的内容。

我的请求对象如下:

[DataContract(Namespace = Namespaces.WsdlServiceTypesNamespace)]
public class Request
{
    [DataMember]
    public Parameter[] Parameters { get; set; }
    [DataMember]
    public string Name{ get; set; }
}

我正在使用的cURL是:

curl -i -H "Accept: application/json" -H "Content-type: application/json" -X POST -d "Parameters":[{"Name":"data","Value":""}],"Name":"Test" http://localhost:8084/test

我尝试了相同结果的内容类型和数据的各种排列。任何人都可以建议为什么这不起作用?

1 个答案:

答案 0 :(得分:1)

结果是内容类型不正确,应该是text / json,还有charset。此外,逃离json可能有所帮助。

因此,cURL变为:

curl -i -H "Accept: application/json" -H "Content-type: text/json; charset=UTF-8" -X POST -d "{\"Parameters\":[{\"Name\":\"data\",\"Value\":\"test\"}],\"Name\":\"Test\"}" http://localhost:8084/test