C# 如何用XML为.NET web服务创建请求?

C# 如何用XML为.NET web服务创建请求?,c#,xml,web-services,C#,Xml,Web Services,如何在XML中指定请求对象格式?我的web服务如下所示: [WebMethod] public string MethodName(string str, string str2) { if (random()) return "123"; else return "no"; } 一切都有条理。如何向消费者指定要在XML中请求什么?我习惯于将其指定为HTTP GET: http://domain.tld/service.asmx/MethodNa

如何在XML中指定请求对象格式?我的web服务如下所示:

[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请求对象是什么样子的?如果我更改数据类型或参数名称,将来在哪里可以找到这种格式/规范

编辑

当前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>

看起来您正在通过公开此服务,在这种情况下,服务还将公开一个基于Web服务描述语言的模式,该模式描述了可用的方法、它们的参数以及它们的返回类型和约束

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

有助于澄清:SOAP是基于XML的标准,因此所有SOAP消息都是XML,但并非所有XML都是SOAP。要与web服务对话,您发送的XML需要符合SOAP规范,因此示例消息可能看起来像是来自Wikipedia的一个经过调整的示例,而不是针对您的示例:

<?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>

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


没有?wsdl,没有/方法等等…只是简单的url非常有用,有没有办法严格地用XML对web服务说话,因为它重量较轻?我的应用程序应该被大量请求。我不知道使用SOAP/WSDL/UDDI。但是,可以使用JSON,它比基本的XMLI要轻一些,也要简单一些,如果需要的话,基本的XMLI不需要SOAP/WSDL/UDDI。我将向使用者指定有效负载,并在C.NET中编写服务。这可能吗?它没有严格地向我显示XML,只显示SOAP1.1、SOAP1.2和HTTPPOST。有没有办法像上面编辑的底部那样指定我的XML请求负载?我不确定你的意思,它确实显示了XML。Soap是xml,如果您要使用URL中的方法通过HTTP post直接传递它所显示的内容,那么它就可以正常工作了。我正在寻找类似于我在作品底部编辑的东西。哦,简单的回答是,你不能…只要你使用复杂类型。如果您的web服务采用基本参数,则可以在URL中将其作为查询参数传递?param1=foo¶m2=bar。我可以建议使用RESTful服务而不是SOAP吗