使用 XML 响应创建 Web 服务

问题描述 投票:0回答:4

使用 XML 响应创建 Web 服务的最简单方法是什么?

  1. 使用 WCF 创建 Web 服务? (好像真的很复杂)
  2. 如果我想使用 WCF 创建我的 Web 服务,我应该从哪里开始?
c# asp.net xml wcf web-services
4个回答
0
投票

在你的情况下,我肯定会使用 WCF 和 REST 绑定 (

webHttpBinding
) - 我不同意它学习起来很复杂。

查看这些资源以开始:


0
投票

创建具有 XML 响应的 Web 服务的最简单方法是,不开玩笑,将 XML 文件放在标准 Web 服务器上并将其作为静态文件提供。

我猜你想要比这更灵活的东西......

您有多种选择,而 WCF 处于更复杂(但更灵活)的一端。第一个问题:你的客户是什么?你在写吗?你想写一个可以被其他客户端使用的网络服务吗?

您想使用 REST——即普通旧 XML (POX) 而不是普通旧 HTTP? XML-RPC?肥皂?

WCF 支持所有这些,因此这实际上取决于您要支持哪些客户端。

更新: 如果你想支持 XML-RPC,你可以做的比开始更糟糕这个 Clemens Vasters 为 WCF 实现的 XML-RPC。我在这里问了一个问题here.


0
投票

创建 WCF 服务实际上非常容易。网上有很多教程。

关于返回xml,有几种方法。 您可以通过将 xml 转换为服务中的字符串,然后在客户端中转换回,使用“老式”SOAP Web 服务来完成此操作。它不漂亮,但它有效。

另一种方法是使用 WCF 并创建一个映射您的 xml 的数据协定。

你可以用数据契约做一些非常好的事情,比如传递数据集和自定义类型,但这有时会限制你可以使用的绑定类型。


0
投票

我刚刚做了一个网络服务。

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 );
?>
© www.soinside.com 2019 - 2024. All rights reserved.