asp.net 创建具有XML响应的Web服务

weylhg0b  于 2023-05-19  发布在  .NET
关注(0)|答案(4)|浏览(125)

创建具有XML响应的Web服务的最简单方法是什么?
1.使用WCF创建Web服务?(看起来很复杂)
1.如果我想使用WCF来创建我的Web服务,我应该从哪里开始?

7jmck4yq

7jmck4yq1#

在您的情况下,我肯定会使用带有REST绑定(webHttpBinding)的WCF--我不同意学习起来很复杂。
查看这些资源以开始:

m1m5dgzv

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的问题。

zrfyljdw

zrfyljdw3#

创建WCF服务实际上非常容易。网上有很多教程。
至于返回XML,有几种方法。您可以通过在服务中将xml转换为字符串,然后在客户机中转换回来,从而在“老派”SOAPWeb服务中实现这一点。虽然不好看但很管用。
另一种方法是使用WCF并创建一个Mapxml的数据契约。
你可以用数据契约做一些很好的事情,比如传递数据集和自定义类型,但这有时会限制你可以使用的绑定类型。

wvyml7n5

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

相关问题