2011-07-26 59 views
0

我正在使用WCF REST模板来测试REST开发。我想测试这样定义的POST方法:如何设置WCF Rest GET?

[WebInvoke(UriTemplate = "", Method = "POST")] 
    public SampleItem Create(SampleItem instance) 
    { 
     // TODO: Add the new instance of SampleItem to the collection 
     return new SampleItem() { Id = 1, StringValue = "Hello Post" }; 
    } 

但我无法弄清楚如何得到它接受我SampleItem参数。我使用小提琴手的POST请求提交给http://ipv4.fiddler:54916/service1有以下标题:

User-Agent: Fiddler 
Host: ipv4.fiddler:54916 

我已经尝试了请求体如下两种解决方案:

SampleItem.Id=1&SampleItem.StringValue=TestValue 

<SampleItem xmlns="http://schemas.datacontract.org/2004/07/PerTrac.Cloud.Service.Statistic"> 
    <Id>2147483647</Id> 
    <StringValue>String content</StringValue> 
</SampleItem> 

但是我能够找回的是400错误。

SampleItem看起来是这样的:

// TODO: Edit the SampleItem class 
    [DataContract] 
    public class SampleItem 
    { 
     [DataMember] 
     public int Id { get; set; } 

     [DataMember] 
     public string StringValue { get; set; } 
    } 

如何传递SampleItem的服务没有得到一个400错误???

回答

3

第一个示例不起作用(应用程序/ x-www-forms-urlencoded不受WCF开箱即用的支持)。第二个示例应该在以下情况下工作:1)SampleItem类的名称空间是PerTrac.Cloud.Service.Statistic; 2)如果你添加一个Content-Type头到请求(Content-Type:text/xml)。

如果不起作用,请在服务器端尝试enabling tracing。跟踪将有一个信息说明为什么该请求被WCF拒绝。

+0

神圣的机车蝙蝠侠!谢谢你,先生 !如果可以的话,我会给你加分。 – BentOnCoding