Как создать запрос в XML для веб-службы .NET? - PullRequest
0 голосов
/ 31 августа 2010

Как указать форматирование объекта запроса в XML? Мои веб-сервисы выглядят так:

[WebMethod]
public string MethodName(string str, string str2)
{
    if (random())
        return "123";
    else
        return "no";
}

Все в строках. Как мне указать потребителю, что запрашивать в XML? Я привык указывать это как HTTP GET:

http://domain.tld/service.asmx/MethodName?str=textgoeshere&str2=moretext

Как выглядит весь объект XML-запроса и где я могу найти этот формат / спецификацию в будущем, если я изменю типы данных или имена параметров?

Редактировать

Текущий выход WSDL:

<wsdl:definitions targetNamespace="my namespace">
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="my namespace">
<s:element name="MyMethodName">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="str" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="str2" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="MyMethodNameResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="MyMethodNameResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>

Является ли следующая точная спецификация XML?

<?xml version="1.0">
<str>1</str>
<str2>123456789</str2>

Ответы [ 2 ]

0 голосов
/ 31 августа 2010

С помощью SOAP .Net фактически генерирует для вас документацию, объясняющую, как должен выглядеть XML. и даже создаст форму для проверки, если вы находитесь в той же коробке, что и сервер.

Просто зайдите на http://domain.tld/service.asmx

(нет? Wsdl, нет / метод и т. Д ... просто простой URL)

0 голосов
/ 31 августа 2010

Похоже, что вы выставляете это через SOAP , и в этом случае служба также предоставляет схему на основе WSDL (язык описания веб-службы), которая описывает доступные методы.их параметры, а также возвращаемый тип и ограничения.

WSDL - это, в основном, определение интерфейса для службы, поэтому, если сигнатуры методов изменяются, клиенты должны будут соответствующим образом обновляться.В случае Visual Studio это можно сделать, щелкнув правой кнопкой мыши ссылки на службы и произнеся «Обновление», в результате чего на стороне клиента будут восстановлены прокси-серверы для веб-службы.


Чтобы уточнить:SOAP является стандартом на основе XML, поэтому все сообщения SOAP являются XML, но не все XML являются SOAP.Чтобы обратиться к веб-сервису, отправляемый вами XML-файл должен соответствовать спецификации SOAP - так может выглядеть пример сообщения (это измененный пример из Википедии, не предназначенный для точного соответствия вашему примеру):

<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Body xmlns:m="my namespace/Service">
  <m:MyMethodName>
    <m:str>someValue</m:str>
    <m:str2>otherValue</m:str2>
  </m:MyMethodName>
</soap:Body>

</soap:Envelope>
...