Регистрация  |  Вход

Failed to parse wsdl: Unsupported Schema element found http://www.w3.org/2001/XMLSchema:group

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?

Den Brown
какие плагины для Эклипса или VisualStudio Code, или другие тулсы посоветуете для парсинга WSDL?

https://www.fuseit.com/products/fuseit-sfdc-explorer/

Иногда помогает. Если нет, тогда ручками.

[quote="Den Brown"]какие плагины для Эклипса или VisualStudio Code, или другие тулсы посоветуете для парсинга WSDL?[/quote]

https://www.fuseit.com/products/fuseit-sfdc-explorer/

Иногда помогает. Если нет, тогда ручками.

wilder
Иногда помогает.

попробую

wilder
Если нет, тогда ручками.

а можно подробности 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'
};


А дальше простой POST запрос с телом body на адрес SOAP_ENDPOINT и с хедерами из headersMap.

Присоединяюсь к ответу Андрея. 
Тоже сколько не мучался с этими 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.

Dmitry Shnyrev
делаешь простой POST запрос

вот так и думал, что до самого последнего XML стринга придется делать это руками

у того WS три метода: создать запись, отменить, и вытянуть репорт по записям.

первые два парсятся и работают. Проблема с последним, у которого самая сложная структура данных Request - Response (собственно, поэтому и не парсится)

плиз дайте видео

Dmitry Shnyrev
как парсить wsdl в SOAPUI и воспроизводить запрос там

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 по-человечиски, а ты все равно в стену долбишь :) 

Dmitry Shnyrev
А это не тоже самое что кнопка Generate Apex class from WSDL в самом SF? Который кстати глючит точно так же.
И не смущает что репо уже 6 лет как не обновлялся?

светлая мысль попробовать этот тул пришла "сверху". Им пофиг на все эти доводы, просто требуют попробовать и сообщить о результате

:)

[quote="Dmitry Shnyrev"]А это не тоже самое что кнопка Generate Apex class from WSDL в самом SF? Который кстати глючит точно так же.
И не смущает что репо уже 6 лет как не обновлялся?[/quote]

светлая мысль попробовать этот тул пришла "сверху". Им пофиг на все эти доводы, просто требуют попробовать и сообщить о результате

:)

Den Brown
светлая мысль попробовать этот тул пришла "сверху". Им пофиг на все эти доводы, просто требуют попробовать и сообщить о результате

Архытекторы не спят. Деньги отрабатывают!

[quote="Den Brown"]светлая мысль попробовать этот тул пришла "сверху". Им пофиг на все эти доводы, просто требуют попробовать и сообщить о результате[/quote]
Архытекторы не спят. Деньги отрабатывают!