我创建了一个带有下面提到的签名的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}/
我正在尝试使用fiddler使用下面提到的选项调用此服务(基于一些查看博客):
方法:发布
网址 - 'http://服务器名称:86 / MyRestService.svc / TestMethod / en-us / str1 / qad11 /'
所需物品。头: 用户代理:Fiddler 主持人:servername:86 Content-Type:application / xml
请求正文:
<TestMethod xmlns="http://tempuri.org/"><mylist>string val</mylist><testval>3</testval></TestMethod>
然而它总是给我一个HTTP结果代码411(需要长度),当我尝试从我的.net测试存根调用服务时出现同样的错误。
答案 0 :(得分:0)
Fiddler应该为你计算名为Content-Length
的HTTP标头(至少它是针对v2.3.9.3)。检查请求的原始标签中的内容,例如:{{ 1}}其中nnn是请求体的字符串长度。如果没有,那么你需要自己添加它。此外,您可以尝试使用the POSTMan chrome plug之类的浏览器插件来创建请求。