Когда вы щелкаете по названию Web-метода (см. рис. 19.7), то ASP.NET генерирует для вас Web-форму для тестирования данного метода Web-сервиса. Доступ к этой форме можно получить через asmx-файл с параметром QueryString, равным ор (от англ. operation). Вы передаете в этот параметр название Web-метода. Например, рассмотрим Web-метод GetCustomerProf ile. Эта Web-форма показана на рис. 19.8.
Верхняя часть формы позволяет вам вводить параметры для Web-метода, а затем вызывать фактический Web-метод при помощи команды POST протокола HTTP. Этот протокол является всего лишь одним из способов вызова Web-метода. Вспомните, что вы используете также и SOAP. На этой странице показаны реальные примеры запроса и ответа SOAP (так же, как и примеры HTTP). Эти примеры могут быть полезны в том случае, если вы хотите знать, как следует формировать сообщения для этих протоколов.
Для примера в листинге 19.5 показано сообщение запроса SOAP 1.2 для данного Web-метода. Обратите внимание на то, что в метод необходимо передать элемент <customerld>. Он имеет тип int.
POST /CustomerProfile.asmx HTTP/1.1 Host: localhost
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length
<soapl2:Envelope xmlns:xsi="
xmlns:xsd="
xmlns:soapl2="
<soapl2:Body>
<GetCustomerProfile xmlns="
</GetCustomerProfile>
</soapl2:Body>
</soapl2:Envelope>
В листинге 19.6 показан соответствующий ответ SOAP после вызова. Обратите внимание, что результат SOAP содержится в элементе <GetCustomerProfileResult>.
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8 Content-Length: length
<soapl2:Envelope xmlns:xsi="
xmlns:xsd="
xmlns:soapl2="
<soapl2:Body>
<GetCustomerProfileResponse xmlns="
<Id>string</Id>
<Name>string</Name>
<Email>string</Email>
<AddressLinel>string</AddressLinel>
<AddressLine2>string</AddressLine2>
<City>string</City>
<State>string</State>
<PostalCode>string</PostalCode>
< Phone >string</Phone >
<ContactEmail>boolean</ContactEmail>
<ContactPhone>boolean</ContactPhone>
</GetCustomerProfileResult>
</GetCustomerProfileResponse>
</soapl2:Body>
</soapl2:Envelope>