【问题标题】:WCF Rest service POST method fails in FiddlerWCF Rest 服务 POST 方法在 Fiddler 中失败
【发布时间】:2011-09-01 16:27:46
【问题描述】:

我正在使用 WCF Restservice 对用户进行身份验证。我有一个 POST 方法,使用 jquery 可以正常工作,但在 Fiddler 测试中失败。我得到 415 Unsupported Media Type。

这是我的代码

[OperationContract]
    [WebInvoke(Method = "POST", UriTemplate = "Login", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
    public string Login(string userName, string password)
    {
        string valid;

        // Log in user
        int authenticatedId = AuthenticateManager.Authenticate(userName, password);
        if (authenticatedId != -1)
        {
            valid = "Welcome " + userName + "!";
        }
        else
        {
            valid = "Login failed!";
        }

        return valid;
    }

这就是我在 Fiddler 体内传递的内容

[{ "userName":"dusshyi", 
   "password":"subram1" }]

这是提琴手生成的

 <HTML><HEAD><STYLE type="text/css">#content{ FONT-SIZE: 0.7em; PADDING-BOTTOM: 2em; MARGIN-LEFT: 30px}BODY{MARGIN-TOP: 0px; MARGIN-LEFT: 0px; COLOR: #000000; FONT-FAMILY: Verdana; BACKGROUND-COLOR: white}P{MARGIN-TOP: 0px; MARGIN-BOTTOM: 12px; COLOR: #000000; FONT-FAMILY: Verdana}PRE{BORDER-RIGHT: #f0f0e0 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #f0f0e0 1px solid; MARGIN-TOP: -5px; PADDING-LEFT: 5px; FONT-SIZE: 1.2em; PADDING-BOTTOM: 5px; BORDER-LEFT: #f0f0e0 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #f0f0e0 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e5e5cc}.heading1{MARGIN-TOP: 0px; PADDING-LEFT: 15px; FONT-WEIGHT: normal; FONT-SIZE: 26px; MARGIN-BOTTOM: 0px; PADDING-BOTTOM: 3px; MARGIN-LEFT: -30px; WIDTH: 100%; COLOR: #ffffff; PADDING-TOP: 10px; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #003366}.intro{MARGIN-LEFT: -15px}</STYLE>
<TITLE>Service</TITLE></HEAD><BODY>
<DIV id="content">
<P class="heading1">Service</P>
<BR/>
<P class="intro">Endpoint not found.</P>
</DIV>
</BODY></HTML>

请帮忙!

【问题讨论】:

  • 你能发布完整的请求提琴手正在生成和完整的响应吗?

标签: wcf json rest post fiddler


【解决方案1】:

您是否在 Fiddler 的请求正文编辑器中将请求的 Content-Type 设置为 application/json

【讨论】:

  • 我会将此标记为答案!我只是从网址中删除正斜杠并工作。前任。 example.com/Login
  • 我面临 400 错误请求消息 :(
  • 我试过了,但在捕获面板中我仍然收到text/html 请求而不是json。
【解决方案2】:

今天早上我也遇到了同样的问题……

为我解决的问题是单击“Composer”选项卡,然后将以下内容添加到“Request Headers”部分:

Content-Type: application/x-www-form-urlencoded

没有这一行,我注意到日志显示它正在尝试使用“text/html”的 Content-Type 调用我的 REST 服务,并且该服务不会被调用。

如果我添加以下行,甚至会发生这种情况:

Content-Type: application/json

但是,在添加“Content-Type: application/x-www-form-urlencoded”行之后,Fiddler 现在将调用内容类型为“application/json”的服务”,并且正确调用了 Web 服务。奇怪……

我在以下页面上创建了一个完整的创建 JSON WCF Web 服务并使用 Fiddler 对其进行测试的演练:

http://mikesknowledgebase.com/pages/Services/WebServices-Page1.htm

【讨论】:

  • 这也为我解决了。没有这个,我在控制器中得到 null 作为我的参数。
  • 我收回了,现在我得到一个 Default(MyDataType) 作为参数而不是 null。
【解决方案3】:

Fiddler Web 调试器:Composer 部分;设置

Parsed
POST,../Service.svc/Login,HTTP/1.1

Request Header:
User-Agent: Fiddler
Content-Type: application/json;charset=UTF-8
Host: localhost:15021
Content-Length: 43

Request Body:
{"username":"ABC","password":"pwd"}

然后执行

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多