如何为.NET Web服务创建XML请求?

时间:2010-08-30 22:05:35

标签: c# xml web-services

如何在XML中指定Request对象格式?我的网络服务看起来像这样:

[WebMethod]
public string MethodName(string str, string str2)
{
    if (random())
        return "123";
    else
        return "no";
}

一切都在弦乐中。如何向消费者指定XML中的请求?我习惯将其指定为HTTP GET:

http://domain.tld/service.asmx/MethodName?str=textgoeshere&str2=moretext

整个XML Request对象是什么样的,如果我更改数据类型或参数名称,将来在哪里可以找到此格式/规范?

修改

当前的WSDL输出:

<wsdl:definitions targetNamespace="my namespace">
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="my namespace">
<s:element name="MyMethodName">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="str" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="str2" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="MyMethodNameResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="MyMethodNameResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>

以下是准确的XML规范吗?

<?xml version="1.0">
<str>1</str>
<str2>123456789</str2>

2 个答案:

答案 0 :(得分:0)

看起来你通过SOAP公开了这个,在这种情况下,服务还会公开一个基于WSDL(Web服务描述语言)的模式,描述可用的方法,它们的参数,及其返回类型和约束。

WSDL基本上是服务的接口定义,因此如果更改了方法签名,则需要相应地更新客户端。对于Visual Studio,您可以通过右键单击服务引用并说“更新”来执行此操作,这将重新生成Web服务的客户端代理。


为了帮助澄清:SOAP是一种基于XML的标准,因此所有SOAP消息都是 XML,但并非所有XML都是SOAP。要与Web服务对话,您发送的XML需要符合SOAP规范 - 因此示例消息可能看起来像(这是来自维基百科的经过调整的示例,不是为了您的示例准确无误):

<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Body xmlns:m="my namespace/Service">
  <m:MyMethodName>
    <m:str>someValue</m:str>
    <m:str2>otherValue</m:str2>
  </m:MyMethodName>
</soap:Body>

</soap:Envelope>

答案 1 :(得分:0)

使用SOAP .Net实际上为您生成文档,解释XML应该是什么样子。如果您与服务器在同一个盒子上,甚至会生成一个表单供您测试。

转到http://domain.tld/service.asmx

(没有?wsdl,没有/方法等......只是简单的网址)