向网址中添加参数时,您正在执行HTTP GET。如果您通过HTTP执行“标准”SOAP,则您的假设不正确。所有的SOAP服务都使用POST。他们可以在技术上使用GET,但通常您会看到POST。原因很简单。 SOAP XML很复杂,并且包含URL中的内容将是一件非常痛苦的事情。
假设你有一个简单的一块XML一样的:
<Customer>
<Name>John</Name>
</Customer>
在获取URL将是可怕的东西。
现在服务器如何知道要执行哪个操作。那么它看起来是在做出的请求。该操作未在URL中指定。
例如我有一个服务,它有两个操作ListAccountsForStatus和ListTelephonicContactsByDate,它们都在http://my-server:9100/AccountService/V1的URL上运行。然而,要求会有所不同:
POST http://my-server:9100/AccountService/V1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: "http://www.insol.irix.com.au/ECollNXDB_V1/EcollUtilsServices/ListTelephonicContactsByDate"
Content-Length: 1337
Host: my-server:9100
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
<soapenv:Envelope>
<soapenv:Header/>
<soapenv:Body>
<ecol:ListTelephonicContactsByDate>
<ecol:ListTelephonicContactsByDateReq>
<ecol:Date>2016-08-04</ecol:Date>
</ecol:ListTelephonicContactsByDateReq>
</ecol:ListTelephonicContactsByDate>
</soapenv:Body>
</soapenv:Envelope>
,第二个:
POSThttp://my-server:9100/AccountService/V1 HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: "http://www.insol.irix.com.au/ECollNXDB_V1/EcollUtilsServices/GetAccountStatusInfo"
Content-Length: 1329
Host: my-server:9100
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ecol="http://www.insol.irix.com.au/ECollNXDB_V1" xmlns:irix="http://www.insol.irix.com.au/IRIX_Headers_V1" xmlns:irix1="http://schemas.datacontract.org/2004/07/IRIXContract.MsgHeaderBase">
<soapenv:Header/>
<soapenv:Body>
<ecol:GetAccountStatusInfo>
<ecol:GetAccountStatusInfoReq>
<ecol:accountNumber>376062766403006</ecol:accountNumber>
</ecol:GetAccountStatusInfoReq>
</ecol:GetAccountStatusInfo>
</soapenv:Body>
</soapenv:Envelope>
请注意,该操作在SOAPAction头指定。所以简而言之,您可以使用SOAP Web服务。
- 点代码生成库(在你的情况看WCF的蓝色,或如何从WSDL为C#代码)的 WSDL和生成所需的类。
- 使用生成的类与服务进行交互使用URL而不是WSDL URL。
您不想手动编写XML请求并读取响应。
欢迎来到stackoverflow.com。你能澄清你的问题吗?你问如何从wsdl文件创建你自己的WebService? https://stackoverflow.com/questions/1394930/how-to-generate-web-service-out-of-wsdl – wp78de