Мне методами ISoapSerializer надо сгенерировать такой запрос
<?xml version="1.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>
<GetUpdateFileLis xmlns="
http://10.35.5.115/RA/WebServices/">
<UpdateProductVersion>int</UpdateProductVersion>
</GetUpdateFileLis>
</soap:Body>
</soap:Envelope>
Мой код:
ISoapSerializerPtr Serializer;
ISoapReaderPtr Reader;
ISoapConnectorPtr Connector;
HRESULT hr = S_OK;
hr = Connector.CreateInstance(__uuidof(HttpConnector30));
Connector->Property["EndPointURL"] = (LPCSTR)lpWebServiceUrl;
hr = Connector->Connect();
Connector->Property["SoapAction"] = _T("
http://10.35.5.115/RA/WebServices/GetUpdateFileLis");
hr = Connector->BeginMessage();
hr = Serializer.CreateInstance(__uuidof(SoapSerializer30));
hr = Serializer->Init(_variant_t((IUnknown*)Connector->InputStream));
hr = Serializer->StartEnvelope("soap",_T("NONE"),_T(""));
hr = Serializer->StartBody("");
hr = Serializer->StartElement("GetUpdateFileLis",
_T("
http://10.35.5.115/RA/WebServices/"),
_T("NONE"),_T(""));
hr = Serializer->StartElement("UpdateProductVersion",
_T(""),
_T("NONE"),_T(""));
hr = Serializer->SoapAttribute("xsi:type","","xsd:int","");
hr = Serializer->WriteString("100");
hr = Serializer->EndElement();
hr = Serializer->EndElement();
hr = Serializer->EndBody();
hr = Serializer->EndEnvelope();
hr = Connector->EndMessage();
даллее — Connector->EndMessage()генерирует ексепшн
если я передаю просто как string то возвращается
incorrect syntax
Здравствуйте, Ayreon, Вы писали:
[]
A> hr = Serializer->SoapAttribute("xsi:type","","xsd:int","");
по-моему это лишнее
[]
Здравствуйте, Константин Л., Вы писали:
КЛ>Здравствуйте, Ayreon, Вы писали:
КЛ>[]
КЛ>A>> hr = Serializer->SoapAttribute("xsi:type","","xsd:int","");
КЛ>
КЛ>по-моему это лишнее
КЛ>[]
Есть Soap request:
<?xml version="1.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>
<RegisterServer xmlns="
http://10.35.5.115/RA/WebServices/">
<ComputerName>string</ComputerName>
<IPAddress>string</IPAddress>
</RegisterServer>
</soap:Body>
</soap:Envelope>
Код для него С++ MSSOAP
hr = Serializer->StartEnvelope("soap",_T("NONE"),_T(""));
hr = Serializer->StartBody("");
hr = Serializer->StartElement("RegisterServer",
_T("
http://10.35.5.115/RA/WebServices/"),
_T("NONE"),_T(""));
//-----------------------------------------------
hr = Serializer->StartElement(_T("ComputerName"),
_T(""),
_T("NONE"),_T(""));
hr = Serializer->WriteString(_T("Test"));
hr = Serializer->EndElement();
hr = Serializer->StartElement(_T("IPAddress"),
_T(""),
_T("NONE"),_T(""));
hr = Serializer->WriteString(_T("10.10.10.10"));
hr = Serializer->EndElement();
//------------------------------------------------
hr = Serializer->EndElement();
hr = Serializer->EndBody();
hr = Serializer->EndEnvelope();
есть у меня Soap response:
<?xml version="1.0" ?>
— <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/XMLSchema">
— <soap:Body>
— <soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>Server was unable to process request. ---> Procedure 'CreateRemoteServer' expects parameter '@Name', which was not supplied.</faultstring>
<detail />
</soap:Fault>
</soap:Body>
</soap:Envelope>
Как я понимаю это серверная ошибка. Вопрос:
Вследствии чего она возникла — вследсвтии неправильно сгенерированного запроса либо это ошибка касающая толко сервер?
Благодарен заранее за ответ