Я пытаюсь заставить работать API обмена информацией о состоянии порта USCG, и пока мне не везет. Я также могу найти почти нулевую информацию об услуге онлайн.
Есть главная страница USCG:
https://cgmix.uscg.mil/XML/Default.aspx
И ASMX / WSDL:
https://cgmix.uscg.mil/xml/PSIXData.asmx
https://cgmix.uscg.mil/xml/PSIXData.asmx?WSDL
Я пытаюсь использовать метод getVesselSummary. API выглядит достаточно просто для использования, но пока я могу получить только пустой ответ. Поэтому на данный момент я задаюсь вопросом, требует ли она какой-либо аутентификации, хотя я не видел упоминаний об этом в Интернете.
Я добавил их WSDL в Visual Studio в качестве веб-ссылки, и классы прокси были построены нормально.
Я пробовал заполнить некоторые параметры, только один из параметров. Результат всегда одинаков (скриншот ниже):
var vs = new uscg.psix.PSIXData();
var data = vs.getVesselSummary("650617", "CITY OF CHICAGO", "WDC2646", "", "", "UNITED STATES", "", "1982");
Я знаю, что этот корабль существует, потому что я могу найти его по тем же критериям поиска, используя их онлайн-интерфейс:
Редактировать
Очевидно, проблема заключается в SOAP / XML, создаваемом клиентом Web Studio для Visual Studio. Когда я подключаюсь к сервису с помощью Soap UI и создаю запрос, он возвращает данные.
Итак, теперь вопрос в том, как заставить Visual Studio / C # вернуть разметку, которая нравится этой службе?
Это работает (Soap UI)
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cgm="http://cgmix.uscg.mil">
<soapenv:Header/>
<soapenv:Body>
<cgm:getVesselSummary>
<cgm:VesselID>650617</cgm:VesselID>
<cgm:VesselName></cgm:VesselName>
<cgm:CallSign></cgm:CallSign>
<cgm:VIN></cgm:VIN>
<cgm:HIN></cgm:HIN>
<cgm:Flag></cgm:Flag>
<cgm:Service></cgm:Service>
<cgm:BuildYear></cgm:BuildYear>
</cgm:getVesselSummary>
</soapenv:Body>
</soapenv:Envelope>
Это НЕ работает - запрос Visual Studio
<?xml version="1.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/XMLSchema">
<soap:Body>
<getVesselSummary xmlns="http://cgmix.uscg.mil">
<VesselID>650617</VesselID>
<VesselName>
</VesselName>
<CallSign>
</CallSign>
<VIN>
</VIN>
<HIN>
</HIN>
<Flag>
</Flag>
<Service>
</Service>
<BuildYear>
</BuildYear>
</getVesselSummary>
</soap:Body>
</soap:Envelope>