【问题标题】:Call to a post method in a RESTful wcf service调用 RESTful wcf 服务中的 post 方法
【发布时间】:2011-12-24 11:33:55
【问题描述】:

我正在制作一个 GET 方法,用链接调用它,一切正常。 这里是:

    [OperationContract]
    [WebInvoke(
        Method = "GET",
        RequestFormat = WebMessageFormat.Json,
        ResponseFormat = WebMessageFormat.Json,
        UriTemplate = "/myMethod/{input}",
        BodyStyle = WebMessageBodyStyle.Bare
        )]
    MyClass myMethod(string input);

这是我调用它的网址: http://localhost:1234/Service1.svc/json/myMethod/blabla

但是,当我制作 post 方法时,它不起作用。这是我的 POST 方法:

    [OperationContract]
    [WebInvoke(
        Method = "POST",
        ResponseFormat = WebMessageFormat.Json,
        RequestFormat = WebMessageFormat.Json,
        BodyStyle = WebMessageBodyStyle.Bare
        )]
    MyClass anotherMethod(string comeOn);

我用这个链接来称呼它: http://localhost:1234/Service1.svc/json/anotherMethod?comeOn=smthing 它说不允许使用方法。

如何调用 POST 方法?

【问题讨论】:

  • 这是一个重复的问题吗? stackoverflow.com/questions/1144166/…
  • @TomislavMarkovski 不,我只是要网址。
  • 如果您要求提供 URL,则表示您正在获取方法。您不能通过请求 URL 来发布。
  • 您需要为此提供一个 UI。您可以为此创建一个 Web 表单或客户端应用程序。
  • Да, така некако,但您仍然可以将参数从您的网页或客户端应用程序传递给您正在调用的方法。

标签: json post get wcf-rest


【解决方案1】:

好吧,所以 POST 和 GET 之间的区别在于 GET 您拥有查询字符串中的所有参数,而 POST 拥有请求的消息正文中的参数。

http://wiki.answers.com/Q/What_is_the_difference_between_get_and_post_method_in_HTTP

您的第二次调用实际上是在执行 GET,因此它不允许该方法。

可以在此处找到测试帖子的方法。

How to simulate browser HTTP POST request and capture result in C#

【讨论】:

  • 也就是说我的客户端需要输入的每一个方法,方法都是GET对吗?
  • 不,应该是一个帖子。如果您使用 QS 上的所有参数发出请求,那么它将是一个 GET。 HTTP 方法对于良好的 restful 设计非常重要。使用 POST 因为参数在方法主体中,所以可以发送到服务的内容限制要高得多。这就是oyu的意思吗?
  • @rangitaz 但是如果POST方法的参数在代码中,那意味着用户不能输入它们,对吧?这意味着需要用户输入输入的每个方法都是 GET。
  • 好的,那么用户如何称呼这些?如果用户通过浏览器或其他方式发出请求,那么是的,它将是一个 GET。如果他们在客户端上填写表格并且客户端通过服务发布数据,那么它可以是 POST。这是一个 JQuery 客户端发布数据的示例stackoverflow.com/questions/230401/…
【解决方案2】:

这是关于使用 REST Web 服务的 MSDN 链接。

http://msdn.microsoft.com/en-us/netframework/cc950529.aspx

【讨论】:

    猜你喜欢
    • 2011-07-11
    • 1970-01-01
    • 2010-12-25
    • 1970-01-01
    • 2012-08-07
    • 2016-11-22
    • 2012-07-03
    • 2012-06-16
    • 2013-06-19
    相关资源
    最近更新 更多