WSDL содержит элемент <xs:group>
WSDL не парсится:
Failed to parse wsdl: Unsupported Schema element found http://www.w3.org/2001/XMLSchema:group
в чем проблема?
можно ли распарсить WSDL в JAVA class а потом переделать в АПЕКС?
какие плагины для Эклипса или VisualStudio Code, или другие тулсы посоветуете для парсинга WSDL?
WSDL содержит элемент <xs:group> WSDL не парсится: [i]Failed to parse wsdl: Unsupported Schema element found http://www.w3.org/2001/XMLSchema:group[/i] в чем проблема? можно ли распарсить WSDL в JAVA class а потом переделать в АПЕКС? какие плагины для Эклипса или VisualStudio Code, или другие тулсы посоветуете для парсинга WSDL?
[quote="Den Brown"]какие плагины для Эклипса или VisualStudio Code, или другие тулсы посоветуете для парсинга WSDL?[/quote] https://www.fuseit.com/products/fuseit-sfdc-explorer/ Иногда помогает. Если нет, тогда ручками.
попробую
а можно подробности please?
PS: с помощью wsimport конвертировал wsdl in Java, мои ожидания что Java будет сильно похожа на Апекс вообще не оправдались
[quote="wilder"]Иногда помогает.[/quote] попробую [quote="wilder"]Если нет, тогда ручками.[/quote] а можно подробности please? PS: с помощью wsimport конвертировал wsdl in Java, мои ожидания что Java будет сильно похожа на Апекс вообще не оправдались
я в разы чаще сталкиваюсь с ситуацией когда НЕ парсится чем когда парсится. В сэйлсфорсе очень строгие ограничения.
реквест пример можно глянуть в soapUI - крайне рекомендую - она тебе всё распарсит, остальное надо будет руками доделывать.
Руками сделанное лучше - не будешь генерировать огроменные апекс файлы с функциями которые тебе не нужны, можно сделать толковые дебаги и логгировать непосредственно реквест. Я предпочитаю делать так даже когда парсится........
я в разы чаще сталкиваюсь с ситуацией когда НЕ парсится чем когда парсится. В сэйлсфорсе очень строгие ограничения. реквест пример можно глянуть в soapUI - крайне рекомендую - она тебе всё распарсит, остальное надо будет руками доделывать. Руками сделанное лучше - не будешь генерировать огроменные апекс файлы с функциями которые тебе не нужны, можно сделать толковые дебаги и логгировать непосредственно реквест. Я предпочитаю делать так даже когда парсится........
Присоединяюсь к ответу Андрея.
Тоже сколько не мучался с этими wsdl лучше варианта не нашел как парсить wsdl в SOAPUI и воспроизводить запрос там. Дальше просто копируешь отсылаемый xml и apex и делаешь простой POST запрос. В результате в apex простой код на 10 строк с полным контролем работы и никакой магии. А все эти парсинги wsdl в SF полная хрень, никогда не работало. Лайфхак на будущее. Если ты имеешь в виду SOAP API самого SF, то помни про дополнительный header который надо отсылать SOAPAction и значение '""'.
Вот к примеру кусок кода из живого проекта
String SOAP_ENDPOINT = BASE_URL + '/services/Soap/m/39.0'
String body = ''+
'<?xml version="1.0" encoding="utf-8"?>' +
'<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">'+
'<env:Header>' +
'<urn:SessionHeader xmlns:urn="http://soap.sforce.com/2006/04/metadata">' +
'<urn:sessionId>' + UserInfo.getSessionId() + '</urn:sessionId>' +
'</urn:SessionHeader>' +
'</env:Header>' +
'<env:Body>' +
'<createMetadata xmlns="http://soap.sforce.com/2006/04/metadata">' +
'<metadata xsi:type="RemoteSiteSetting">' +
'<fullName>' + name + '_' + timestamp + '</fullName>' +
'<description>CurrentOrgBaseUrl</description>' +
'<disableProtocolSecurity>false</disableProtocolSecurity>' +
'<isActive>true</isActive>' +
'<url>' + url + '</url>' +
'</metadata>' +
'</createMetadata>' +
'</env:Body>' +
'</env:Envelope>';Map<String, String> headersMap = new Map<String, String> {
'SOAPAction' => '""',
'Content-Type' => 'text/xml'
};
Присоединяюсь к ответу Андрея. Тоже сколько не мучался с этими wsdl лучше варианта не нашел как парсить wsdl в SOAPUI и воспроизводить запрос там. Дальше просто копируешь отсылаемый xml и apex и делаешь простой POST запрос. В результате в apex простой код на 10 строк с полным контролем работы и никакой магии. А все эти парсинги wsdl в SF полная хрень, никогда не работало. Лайфхак на будущее. Если ты имеешь в виду SOAP API самого SF, то помни про дополнительный header который надо отсылать [b]SOAPAction[/b] и значение '""'. Вот к примеру кусок кода из живого проекта [code] String SOAP_ENDPOINT = BASE_URL + '/services/Soap/m/39.0' String body = ''+ '<?xml version="1.0" encoding="utf-8"?>' + '<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">'+ '<env:Header>' + '<urn:SessionHeader xmlns:urn="http://soap.sforce.com/2006/04/metadata">' + '<urn:sessionId>' + UserInfo.getSessionId() + '</urn:sessionId>' + '</urn:SessionHeader>' + '</env:Header>' + '<env:Body>' + '<createMetadata xmlns="http://soap.sforce.com/2006/04/metadata">' + '<metadata xsi:type="RemoteSiteSetting">' + '<fullName>' + name + '_' + timestamp + '</fullName>' + '<description>CurrentOrgBaseUrl</description>' + '<disableProtocolSecurity>false</disableProtocolSecurity>' + '<isActive>true</isActive>' + '<url>' + url + '</url>' + '</metadata>' + '</createMetadata>' + '</env:Body>' + '</env:Envelope>'; Map<String, String> headersMap = new Map<String, String> { 'SOAPAction' => '""', 'Content-Type' => 'text/xml' }; [/code] А дальше простой POST запрос с телом [b]body[/b] на адрес [b]SOAP_ENDPOINT[/b] и с хедерами из headersMap.
вот так и думал, что до самого последнего XML стринга придется делать это руками
у того WS три метода: создать запись, отменить, и вытянуть репорт по записям.
первые два парсятся и работают. Проблема с последним, у которого самая сложная структура данных Request - Response (собственно, поэтому и не парсится)
плиз дайте видео
PS: вроде разобрался: создаешь SOAP проект из WSDL и SoapUI сам создает пример request
[quote="Dmitry Shnyrev"] делаешь простой POST запрос[/quote] вот так и думал, что до самого последнего XML стринга придется делать это руками у того WS три метода: создать запись, отменить, и вытянуть репорт по записям. первые два парсятся и работают. Проблема с последним, у которого самая сложная структура данных Request - Response (собственно, поэтому и не парсится) плиз дайте видео [quote="Dmitry Shnyrev"]как парсить wsdl в SOAPUI и воспроизводить запрос там[/quote] PS: вроде разобрался: создаешь SOAP проект из WSDL и SoapUI сам создает пример request
Вот тут видос удачный, демонстрирует все аспекты. В том числе логин и отправку запроса.
https://www.youtube.com/watch?v=zPBqHjZFHf4
Вот тут видос удачный, демонстрирует все аспекты. В том числе логин и отправку запроса. https://www.youtube.com/watch?v=zPBqHjZFHf4
лично я может чегото не понимаю, но я не нашёл способа толково вывести в дебаг целиком весь реквест прямо перед тем как он высылается, если мы высылаем через автоматически созданный апекс класс из WSDL. И это прям проблема.
потому что на реальных проектах постоянно приходится дебажить и получать sample requestы. У меня например периодически отваливаеся сторона куда шлешь и просят прислать пример запроса который не работает
лично я может чегото не понимаю, но я не нашёл способа толково вывести в дебаг целиком весь реквест прямо перед тем как он высылается, если мы высылаем через автоматически созданный апекс класс из WSDL. И это прям проблема. потому что на реальных проектах постоянно приходится дебажить и получать sample requestы. У меня например периодически отваливаеся сторона куда шлешь и просят прислать пример запроса который не работает
кто нибудь пробовал вот этот тул:
https://github.com/forcedotcom/WSDL2Apex
мы скомпилировали его, не можем запустить
ругается что Must contain the following arguments...
но вроде все правильно вызываем, все три аргументы на месте
кто нибудь пробовал вот этот тул: https://github.com/forcedotcom/WSDL2Apex мы скомпилировали его, не можем запустить ругается что Must contain the following arguments... но вроде все правильно вызываем, все три аргументы на месте
А это не тоже самое что кнопка Generate Apex class from WSDL в самом SF? Который кстати глючит точно так же.
И не смущает что репо уже 6 лет как не обновлялся?
Вверху же привели пример как работать с WSDL по-человечиски, а ты все равно в стену долбишь
А это не тоже самое что кнопка Generate Apex class from WSDL в самом SF? Который кстати глючит точно так же. И не смущает что репо уже 6 лет как не обновлялся? Вверху же привели пример как работать с WSDL по-человечиски, а ты все равно в стену долбишь :)
светлая мысль попробовать этот тул пришла "сверху". Им пофиг на все эти доводы, просто требуют попробовать и сообщить о результате
:)
[quote="Dmitry Shnyrev"]А это не тоже самое что кнопка Generate Apex class from WSDL в самом SF? Который кстати глючит точно так же. И не смущает что репо уже 6 лет как не обновлялся?[/quote] светлая мысль попробовать этот тул пришла "сверху". Им пофиг на все эти доводы, просто требуют попробовать и сообщить о результате :)
Архытекторы не спят. Деньги отрабатывают!
[quote="Den Brown"]светлая мысль попробовать этот тул пришла "сверху". Им пофиг на все эти доводы, просто требуют попробовать и сообщить о результате[/quote] Архытекторы не спят. Деньги отрабатывают!