Restful WCF 服务 POST 方法在 fiddler2 中返回 HTTP400 错误

Posted

技术标签:

【中文标题】Restful WCF 服务 POST 方法在 fiddler2 中返回 HTTP400 错误【英文标题】:Restful WCF service POST methods returns HTTP400 error in fiddler2 【发布时间】:2012-06-16 10:34:21 【问题描述】:

为登录验证创建了简单的 Restful 服务。以下是我的接口和类定义。

界面演示:

public interface IDemo

    [OperationContract]
    [WebInvoke(RequestFormat = WebMessageFormat.Json,
               ResponseFormat = WebMessageFormat.Json,
               BodyStyle = WebMessageBodyStyle.Bare,
               UriTemplate = "/ValidateUser?Username=UserName&Password=Password",
               Method = "POST")]
    string  ValidateUser(string Username, string Password);

课堂演示:

public class Demo:IDemo

    public string ValidateUser(string Username, string Password)
    
        Users objUser = new Users();
        objUser.UserID = Username;
        objUser.Password = Password;
        string Msg = LoginDataService.ValidateUser(Username, Password);
        return Msg;
    

localhost:49922/Demo.svc/ValidateUser?Username=demo&Password=demo(带http:\)

当我尝试在 Fiddler2 的 Post 方法下解析上述 URL 时,出现 Bad Request HTTP400 错误。

谁能帮我看看我的代码出了什么问题。

感谢和问候,

维杰

【问题讨论】:

我不知道您的代码可能还有什么其他问题,但是如果您要在查询字符串中指定所有输入参数,您应该将您的服务方法标记为 GET 而不是 POST . 如何配置适用的端点以及客户端和服务是否相同? 巴吉感谢您的评论。这是一个简单的演示服务,仅此而已.. 【参考方案1】:

对于上述 REST 方法,来自 Fiddler 的 POST 需要如下所示:

POST http://localhost/Sample/Sample.svc/ValidateUser?Username=demo&Password=demo HTTP/1.1
User-Agent: Fiddler
Content-Type: application/json
Host: rajeshwin7
Content-Length: 0

这样做我会返回 200 OK HTTP 状态,如下所示:

HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 44
Content-Type: application/json; charset=utf-8
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Thu, 14 Jun 2012 15:35:28 GMT

"Server returns username demo with password demo"

【讨论】:

我已将无参数列表的方法更改为“/validate”,并且我已使用 testclient 应用程序对其进行了测试,它工作正常。但是当我用提琴手测试这个时,我无法得到 json 结果。谢谢你的评论... 你能发布你的提琴手原始请求和响应【参考方案2】:

您的 URI 模板看起来像是在发送 URL 中的参数。但是当您使用 POST 时,参数会在 http 正文中发送。

请注意,您不应在 url 中发送用户名和密码,因为它可以被记录。

【讨论】:

以上是关于Restful WCF 服务 POST 方法在 fiddler2 中返回 HTTP400 错误的主要内容,如果未能解决你的问题,请参考以下文章

在 MVC 5 中调用 WCF Restful POST 方法

WCF RESTful 应用程序 PUT、POST、DELETE 收到相同的错误:“该方法不允许。”

如何使用 post/put WCF RestFul Service

带有参数的 Wcf Restful 服务发布用户名

WCF RESTFul服务中的异常处理

基于WinService,开发Restful 风格的Wcf 服务端