对于具有单个参数的WCF RESTful服务,XML post请求应该是什么样的?

时间:2010-01-19 06:04:14

标签: xml wcf post rest

在通过WCF REST服务执行发布请求时,我无法弄清楚我的XML应该是什么样子。 当使用datacontract我完全没有问题但是当我只想发送一个参数例如一个int时,我得到以下错误 - “远程服务器返回错误:(405)方法不允许。”

[OperationContract]  
[WebInvoke(UriTemplate = "/DeleteUser", Method= "Post")]  
bool DeleteUser(int userId);

我的XML应该是什么样的?

提前致谢

4 个答案:

答案 0 :(得分:1)

DJ - 我发现你做的最初要求的唯一方法就是从这个链接中刷一个例子。它使用Stream类在HTTP请求的主体中引入post参数。然后你必须手动偷偷摸摸......

希望this有所帮助。

答案 1 :(得分:0)

像这样

[OperationContract]
[WebInvoke(UriTemplate = "/DeleteUser/{userId}", Method= "Post")]
bool DeleteUser(string userId)
{
   int actualUserId = Int32.Parse(userId);
   ...
}

ps:你为什么用一个参数使用POST?


如果你想删除,我可以看到使用GET,但为什么不使用HTTP DELETE呢? 在这种情况下,URI模板将是/ user / {userId},而Method =“Delete”。

没有有效负载,没有XML可以传递。

Rob Bagby explains

代码看起来像

[OperationContract]
[WebInvoke(UriTemplate = "/User/{userId}", Method= "Delete")]
bool DeleteUser(string userId)
{
   int actualUserId = Int32.Parse(userId);
   ...
}

答案 2 :(得分:0)

我使用帖子作为删除功能,所以我不想在uri中使用参数。接听电话应该是为了获取数据。

这不是问题。 userId是一个int,期望和int。我的问题是如果使用一个参数做一个帖子xml应该是什么样的?

答案 3 :(得分:0)

确保您正在对资源执行POST操作。 URL可能如下:

http://localhost/SampleApplication/DeleteUser

以下是您需要的请求格式

<int xmlns="http://schemas.microsoft.com/2003/10/Serialization/">55</int>  

上面的xml需要成为邮件正文的一部分。