Клиент web-службы, использующий необработанные данные SOAP и протокол передачи гипертекстовых файлов HTTP
Функция BuildContent считывает в буфер содержимое файла и вычисляет размер буфера в байтах.
*contentLength = 0; String *line; // Строка while ((line = fileStream › ReadLine())!= 0) { sb › Append(line); // Добавляет в конец (строка) sb › Append("\r\n"); // Добавляет в конец ("\r\n") *contentLength += line › Length + 2; // *contentLength + = строка › Длина + 2; } fileStream › Close();
Данные в файле SoapAdd.txt представлены в SOAP-формате. Как и следовало ожидать, этот файл имеет вид, описанный выше. Входные параметры 9 и 3 представляются в соответствии со спецификацией WSDL.
<?xml version="l.О" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <Add xmlns="http://tempuri.org/"> <x>9</x> <y>3</y> </Add> </soap:Body> </soap:Envelope>
Сначала программа формирует запрос. Для этого используется метод POST протокола передачи гипертекстовых файлов HTTP. Запрос содержит стандартные заголовки протокола передачи гипертекстовых файлов HTTP и дополнительный заголовок SOAPAction. Затем запрос кодируется согласно спецификации SOAP. Вывод программы приведен ниже:
POST /SimpleWebService/Add.asmx HTTP/1.1 Host: localhost Content-Type: text/xml; charset=utf-8 Content-Length: 355 SOAPAction: "http://tempuri.org/Add" <?xml version="l.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <Add xmlns="http://tempuri.org/"> <x>9</x> <y>3</y> </Add> </soap:Body> </soap:Envelope>
Затем программа записывает ответ. Ответ, снова-таки, начинается с заголовков протокола передачи гипертекстовых файлов HTTP. За ними следует возвращаемый результат, 12, закодированный в соответствии со спецификацией SOAP.
НТТР/1.1 200 ОК Server: Microsoft-IIS/5. О Date: Tue, 30 Oct 2001 16:49:42 GMT Cache-Control: private, max-age=0 Content-Type: text/xml; charset=utf-8 Content-Length: 358 <?xml version="l.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XM LSchema"> <soap:Body> <AddResponse xmlns="http://tempuri.org/"> <AddResult>12</AddResult> </AddResponse> </soap:Body> </soap:Envelope>