C# SOAP Метод Webservice возвращает null - PullRequest
0 голосов
/ 10 июля 2020

Я вызываю метод из веб-службы 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>

Есть идеи, почему это может происходить?

Спасибо!

1 Ответ

0 голосов
/ 10 июля 2020

Решением было добавить службу в качестве веб-ссылки вместо ссылки на службу. Дополнительная информация здесь:

http://webservices20.blogspot.com/2008/10/interoperability-gotcha-visual-studio.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...