Всегда ли веб-сервис .net 2.0 использует Soap через http? - PullRequest
3 голосов
/ 09 июня 2011

Я занимаюсь исследованиями, и я скачал тестовое приложение, которое вызывает стандартную службу .asmx.Служба вызывается с использованием стандартного запроса POST.Я немного смущен, потому что я думал, что сервисы .asmx всегда использовали SOAP?Или способность общаться с HTTP (POST) была чем-то, что было недавно введено?

Ответы [ 3 ]

1 голос
/ 09 июня 2011

Нет, веб-сервисы ASMX не ограничиваются SOAP. Вы можете использовать ScriptMethodAttribute , чтобы указать HTTP-глагол для веб-метода. Это было введено в .Net 3.5. Например:

[ScriptMethod(UseHttpGet = true)]
public string MyMethod()
{
   return "Hello World";
}
1 голос
/ 09 июня 2011

.NET Web-Services использует тот протокол, который вы выберете. По умолчанию это SOAP, и POST запросы разрешены.

Стандартная страница справки, автоматически создаваемая .NET:

POST /demo/MSDN/PerfCounter.asmx HTTP/1.1
Connection: Keep-Alive
Content-Length: 150
Content-Type: text/xml
Host: localhost
User-Agent: MS Web Services Client Protocol 1.0.2204.19
SOAPAction: "http://tempuri.org/PerfCounters"

<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
               xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
               xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
               xmlns:xsd="http://www.w3.org/1999/XMLSchema">
  <soap:Body>
    <PerfCounters xmlns="http://tempuri.org/"/>
  </soap:Body>
</soap:Envelope>

Также вы можете включить метод GET:

<configuration>
    <system.web>
    <webServices>
        <protocols>
            <add name="HttpGet"/>
            <add name="HttpPost"/>
        </protocols>
    </webServices>
    </system.web>
</configuration>

Это работает с .NET 1.1

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

SOAP - это стандарт, который вы можете использовать. Он основан на XML. Если это что-то простое, то я бы использовал JSON. Веб-сервисы не ограничиваются POST. Вы должны использовать POST при запуске подпрограмм Create / Update / Delete, и вы должны использовать GET при запуске подпрограмм извлечения данных.

...