创建具有XML响应的Web服务的最简单方法是什么?1.使用WCF创建Web服务?(看起来很复杂)1.如果我想使用WCF来创建我的Web服务,我应该从哪里开始?
7jmck4yq1#
在您的情况下,我肯定会使用带有REST绑定(webHttpBinding)的WCF--我不同意学习起来很复杂。查看这些资源以开始:
webHttpBinding
m1m5dgzv2#
创建具有XML响应的Web服务的最简单方法是,不开玩笑,将XML文件放在标准Web服务器上,并将其作为静态文件提供。我猜你想要比这更灵活的东西,虽然...您有几个选项,WCF处于更复杂(但更灵活)的一端。第一个问题:您的客户是什么?你在写吗?您是否希望编写可由其他客户端使用的Web服务?你想使用REST吗?在纯旧HTTP上使用纯旧XML(POX)?XML-RPC?SOAP?WCF支持所有这些,因此这实际上取决于您想要支持的客户端。
**更新:**如果你想支持XML-RPC,你可以做得比从this implementation of XML-RPC for WCF by Clemens Vasters开始更糟糕。我问了一个关于here的问题。
zrfyljdw3#
创建WCF服务实际上非常容易。网上有很多教程。至于返回XML,有几种方法。您可以通过在服务中将xml转换为字符串,然后在客户机中转换回来,从而在“老派”SOAPWeb服务中实现这一点。虽然不好看但很管用。另一种方法是使用WCF并创建一个Mapxml的数据契约。你可以用数据契约做一些很好的事情,比如传递数据集和自定义类型,但这有时会限制你可以使用的绑定类型。
wvyml7n54#
我刚刚做了一个Web服务。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 ); ?>
4条答案
按热度按时间7jmck4yq1#
在您的情况下,我肯定会使用带有REST绑定(
webHttpBinding
)的WCF--我不同意学习起来很复杂。查看这些资源以开始:
m1m5dgzv2#
创建具有XML响应的Web服务的最简单方法是,不开玩笑,将XML文件放在标准Web服务器上,并将其作为静态文件提供。
我猜你想要比这更灵活的东西,虽然...
您有几个选项,WCF处于更复杂(但更灵活)的一端。第一个问题:您的客户是什么?你在写吗?您是否希望编写可由其他客户端使用的Web服务?
你想使用REST吗?在纯旧HTTP上使用纯旧XML(POX)?XML-RPC?SOAP?
WCF支持所有这些,因此这实际上取决于您想要支持的客户端。
**更新:**如果你想支持XML-RPC,你可以做得比从this implementation of XML-RPC for WCF by Clemens Vasters开始更糟糕。我问了一个关于here的问题。
zrfyljdw3#
创建WCF服务实际上非常容易。网上有很多教程。
至于返回XML,有几种方法。您可以通过在服务中将xml转换为字符串,然后在客户机中转换回来,从而在“老派”SOAPWeb服务中实现这一点。虽然不好看但很管用。
另一种方法是使用WCF并创建一个Mapxml的数据契约。
你可以用数据契约做一些很好的事情,比如传递数据集和自定义类型,但这有时会限制你可以使用的绑定类型。
wvyml7n54#
我刚刚做了一个Web服务。
PHP服务器端代码:
我的WSDL文件
客户端PHP文件: