我正在使用.net框架编写一个简单的Web服务DEMO,并且我正在使用名为" soapUI"的工具测试Web服务。我试图通过HTTP HOST用XML数据发送请求消息,但我有一个问题。
[WebMethod]
[WebInvoke(ResponseFormat = WebMessageFormat.Xml, RequestFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
public XmlDocument loginrequest(string XmlString)
{
XmlDocument Xdoc = new XmlDocument();
// parse request XML data, and return response XML document
// ......
return Xdoc;
}
<configuration>
<system.web>
<compilation targetFramework="4.5" debug="true"/>
<httpRuntime targetFramework="4.5" requestValidationMode="2.0"/>
<pages validateRequest="false"/>
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
</system.web>
</configuration>
application/x-www-form-urlencoded)
:XmlString=%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3CLoginRequest%3E%3CUser%3E%3CUserName%3ETestUser%3C%2FUserName%3E%3CPassword%3E123456%3C%2FPassword%3E%3C%2FUser%3E%3CSeqNum%3E%3C%2FSeqNum%3E%3C%2FLoginRequest%3E
text/xml
或application/xml
):<?xml version="1.0" encoding="utf-8"?>
<LoginRequest>
<User>
<UserName>TestUser</UserName>
<Password>123456</Password>
</User>
<SeqNum>
</SeqNum>
</LoginRequest>
以下是完整的错误消息:
System.InvalidOperationException: Request format is invalid: application/xml.
at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()
at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()
总结:由于soapUI似乎是一个广泛使用的测试工具,它应该没问题。我想知道的是,我是否需要更改我的Web服务代码或Web.config
中的任何内容以支持XML格式的HTTP POST数据?
答案 0 :(得分:0)
实际上我试图做的是发送XML字符串作为HTTP POST请求的实体主体,而不是查询字符串。我还不确定为什么会这样做
请求格式无效
但最后我通过HttpContext.Current.Request.InputStream
阅读请求实体 - 解决了这个问题。
答案 1 :(得分:-1)