Я вызываю метод из веб-службы SOAP в проекте C#, и хотя я могу видеть, что приходит ответ с ожидаемыми данными и форматом (с использованием скрипта) на уровне программы, метод возвращает значение null. Может ли быть так, что функция каким-то образом неправильно анализирует ответ?
Функция вызывается стандартным способом (selectedPLCInfo заканчивается как null)
LanDB.DeviceBasicInfo selectedPLCInfo = client.getDeviceBasicInfo(plcHostname);
Это отправляемый запрос со стороны приложения:
POST xxx/soap/soap.fcgi?v=6 HTTP/1.1 Content-Type: text/xml; charset=utf-8 SOAPAction: "" Host: xxx Content-Length: 1439 Expect: 100-continue Accept-Encoding: gzip, deflate <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Header> <Auth xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <token xmlns="http://schemas.datacontract.org/2004/07/TIA_Portal_VPG_Manager">token</token> </Auth> </s:Header> <s:Body s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <q1:getDeviceBasicInfo xmlns:q1="urn:NetworkService"><DeviceName xsi:type="xsd:string">CFP-RE12-VLHCPFM2</DeviceName></q1:getDeviceBasicInfo></s:Body> </s:Envelope>
И это ответ:
HTTP/1.1 200 OK Date: Fri, 10 Jul 2020 10:15:17 GMT Server: Apache SOAPServer: SOAP060::Lite/Perl/0.60 Content-Length: 2912 Content-Type: text/xml; charset=utf-8 <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:types="urn:NetworkDataTypes" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <namesp3945:getDeviceBasicInfoResponse xmlns:namesp3945="urn:NetworkService"> <DeviceBasicInfo xsi:type="types:DeviceInfo"> (... a ton of expected data here) </DeviceBasicInfo> </namesp3945:getDeviceBasicInfoResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Есть идеи, почему это может происходить?
Спасибо!
Решением было добавить службу в качестве веб-ссылки вместо ссылки на службу. Дополнительная информация здесь:
http://webservices20.blogspot.com/2008/10/interoperability-gotcha-visual-studio.html