Создать веб-сервис с ответом XML - PullRequest
1 голос
/ 04 октября 2010

Какой самый простой способ создать веб-сервис с ответом XML?

  1. Использовать WCF для создания веб-сервиса?(кажется действительно сложным)
  2. Если я хочу использовать WCF для создания своего веб-сервиса, с чего мне начать?

Ответы [ 5 ]

0 голосов
/ 03 августа 2011

На самом деле довольно легко создать сервис WCF.В Интернете много учебных пособий.

Что касается возврата xml, есть несколько способов.Это можно сделать с помощью веб-службы SOAP «старой школы», преобразовав xml в строку в службе, а затем преобразовав обратно в клиент.Это не красиво, но работает.

Альтернативой и способом, которым я бы это сделал, было бы использование WCF и создание контракта данных, который отображает ваш xml.

Вы можете сделать некоторыедовольно хорошие вещи с контрактами данных, такие как наборы данных обхода и пользовательские типы, но это может иногда ограничивать типы привязки, которые вы можете использовать.

0 голосов
/ 30 июня 2011

Я только что создал веб-сервис.

Код на стороне 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 );
?>

Надеюсь, это поможет вам.

0 голосов
/ 04 октября 2010

В этой статье доступно несколько ссылок.Надеюсь, они вам помогут -

http://social.msdn.microsoft.com/Forums/en/wcf/thread/b082d6de-d1e9-4e51-a0ab-0fe98d7003e6

0 голосов
/ 04 октября 2010

В вашем случае я бы определенно использовал WCF с привязкой REST (webHttpBinding) - и я не согласился бы с тем, что его сложно изучить.

Для начала ознакомьтесь с этими ресурсами:

0 голосов
/ 04 октября 2010

Самый простой способ создать веб-сервис с ответом XML - это, без шуток, поместить файл XML на стандартный веб-сервер и использовать его в качестве статического файла.

Полагаю, вы хотитечто-то более гибкое, чем это, хотя ...

У вас есть несколько вариантов, и WCF находится на более сложном (но гибком) конце спектра.Первый вопрос: кто твой клиент?Ты это пишешь?Хотите написать веб-сервис, который может использоваться другими клиентами?

Хотите использовать REST - т.е. обычный старый XML (POX) поверх простого старого HTTP?XML-RPC?SOAP?

WCF поддерживает все это, так что это действительно зависит от того, каких клиентов вы хотите поддерживать.

Обновление: Если вы хотите поддерживать XML-RPC, выможет сделать хуже, чем начать с этой реализацией XML-RPC для WCF Клеменса Вастерса .Я задал вопрос об этом здесь .

...