0

我创建了一个具有以下提到的签名的 WCF POST 服务。这在 IIS 中成功托管,我可以在服务的帮助页面中看到它:

[OperationContract]
    [WebInvoke(BodyStyle = WebMessageBodyStyle.Wrapped,
        RequestFormat = WebMessageFormat.Xml,
        ResponseFormat = WebMessageFormat.Xml,
        Method = "POST",
        UriTemplate = "TestMethod/{lang}/{str}/{selectedstring}/")]
    string TestMethod(string lang, string str, string selectedstring, string mylist, int testval);

在服务的帮助页面上,该方法正确显示为

TestMethod/{lang}/{str}/{selectedstring}/ || POST || Service at http://localhost:86/MyRestService.svc/TestMethod/{LANG}/{STR}/{SELECTEDSTRING}/ 

我正在尝试使用带有以下提到选项的提琴手来调用此服务(基于对博客的一些查找):

方法:发布

URL - 'http://servername:86/MyRestService.svc/TestMethod/en-us/str1/qad11/'

请求。标头:用户代理:提琴手主机:服务器名称:86 内容类型:应用程序/xml

请求正文:

<TestMethod xmlns="http://tempuri.org/"><mylist>string val</mylist><testval>3</testval></TestMethod>

但是,它总是给我一个 HTTP 结果代码 411(需要长度),当我尝试从我的 .net 测试存根调用服务时出现同样的错误。

4

1 回答 1

0

Fiddler 应该计算Content-Length为您命名的 HTTP 标头(至少它适用于 v2.3.9.3)检查请求的原始选项卡中的类似内容:Content-Length: nnn其中 nnn 是请求正文的字符串长度。如果没有,那么您需要自己添加它。此外,您可以尝试像POSTMan chrome 插件这样的浏览器插件来创建您的请求。

于 2012-06-05T16:14:41.297 回答