使用 XML 响应创建 Web 服务的最简单方法是什么?
在你的情况下,我肯定会使用 WCF 和 REST 绑定 (
webHttpBinding
) - 我不同意它学习起来很复杂。
查看这些资源以开始:
创建具有 XML 响应的 Web 服务的最简单方法是,不开玩笑,将 XML 文件放在标准 Web 服务器上并将其作为静态文件提供。
我猜你想要比这更灵活的东西......
您有多种选择,而 WCF 处于更复杂(但更灵活)的一端。第一个问题:你的客户是什么?你在写吗?你想写一个可以被其他客户端使用的网络服务吗?
您想使用 REST——即普通旧 XML (POX) 而不是普通旧 HTTP? XML-RPC?肥皂?
WCF 支持所有这些,因此这实际上取决于您要支持哪些客户端。
更新: 如果你想支持 XML-RPC,你可以做的比开始更糟糕这个 Clemens Vasters 为 WCF 实现的 XML-RPC。我在这里问了一个问题here.
创建 WCF 服务实际上非常容易。网上有很多教程。
关于返回xml,有几种方法。 您可以通过将 xml 转换为服务中的字符串,然后在客户端中转换回,使用“老式”SOAP Web 服务来完成此操作。它不漂亮,但它有效。
另一种方法是使用 WCF 并创建一个映射您的 xml 的数据协定。
你可以用数据契约做一些非常好的事情,比如传递数据集和自定义类型,但这有时会限制你可以使用的绑定类型。
我刚刚做了一个网络服务。
PHP 服务器端代码:
<?php // instantiate SOAP server
function sendXmlMsg($msg){
return $msg;
}
ini_set("soap.wsdl_cache_enabled", "0"); // disabling WSD
$server = new SoapServer("mark.wsdl");
// Register exposed method
$server->addFunction('sendXmlMsg'); // generate captcha
//$server->addFunction('check_captcha'); // check captcha ID
$server->handle(); //?>
我的 WSDL 文件是
<?xml version ='1.0' encoding ='UTF-8' ?>
<definitions name='Msg91'
targetNamespace='http://localhost/webtest/test.wsdl'
xmlns:tns='http://localhost/webtest/test.wsdl'
xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
xmlns:xsd='http://www.w3.org/2001/XMLSchema'
xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/'
xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'
xmlns='http://schemas.xmlsoap.org/wsdl/'>
<message name='sendXmlMsgRequest'>
<part name='msg' type='xsd:string'/>
</message>
<message name='sendXmlMsgResponse'>
<part name='Result' type='xsd:string'/>
</message>
<portType name='Msg91PortType'>
<operation name='sendXmlMsg'>
<input message='tns:sendXmlMsgRequest'/>
<output message='tns:sendXmlMsgResponse'/>
</operation>
</portType>
<binding name='Msg91Binding' type='tns:Msg91PortType'>
<soap:binding style='rpc'
transport='http://schemas.xmlsoap.org/soap/http'/>
<operation name='sendXmlMsg'>
<soap:operation soapAction='urn:xmethods-delayed-quotes#sendXmlMsg'/>
<input>
<soap:body use='encoded' namespace='urn:xmethods-delayed-quotes'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</input>
<output>
<soap:body use='encoded' namespace='urn:xmethods-delayed-quotes'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</output>
</operation>
</binding>
<service name='Msg91Service'>
<port name='Msg91Port' binding='tns:Msg91Binding'>
<soap:address location='http://localhost/webtest/test.php'/>
</port>
</service>
</definitions>
客户端PHP文件:
<?php
$client = new SoapClient("mark.wsdl");
$params= array('HiT');
echo $client->__soapCall( 'sendXmlMsg', $params );
?>