Не могу загрузить wsdl файл размещение
Это отлично работает на моем сервере WAMP, но не работает на главном сервере Linux!?
Что мне здесь пропало. (
Вызов URL-адреса из PHP возвращает ошибку
ОТВЕТЫ
Ответ 1
Попробуйте явно установить пользовательский агент, используя поток контекста следующим образом:
Чтобы проверить это, попробуйте выполнить следующее на хосте linux:
этот запрос IPv6 завершается с ошибкой.
этот запрос IPv6 успешно завершен.
оба этих запроса IPv4 успешно завершены.
Интересный случай:) Я предполагаю, что ваш хост linux разрешает ec.europa.eu на свой IPv6-адрес и что ваша версия SoapClient по умолчанию не добавила строку пользовательского агента.
Ответ 2
Попробуй это. Надеюсь, это поможет
Ответ 3
Эта проблема может быть вызвана отключением загрузчика объектов libxml.
Попробуйте запустить libxml_disable_entity_loader(false); перед созданием экземпляра SoapClient .
Ответ 4
Также (независимо от того, работает это или нет), убедитесь, что /tmp можно записать на ваш веб-сервер и что он не заполнен.
Ответ 5
Это может быть полезно для кого-то, хотя нет точного ответа на этот вопрос.
Мой мыльный url имеет нестандартный порт (например, 9087), и брандмауэр заблокировал этот запрос, и я каждый раз принимал эту ошибку:
ОШИБКА - 2017-12-19 20:44:11 → Неустранимая ошибка - SOAP-ERROR: Parsing WSDL: Не удалось загрузить из http://soalurl.test:9087/orawsv?wsdl ': не удалось загрузить внешнюю сущность " http://soalurl.test:9087/orawsv?wsdl"
Я разрешил порт в брандмауэре и решил ошибку!
Ответ 6
503 означает, что функции работают, и вы получаете ответ от удаленного сервера, отрицающего вас. Если вы когда-либо пытались выполнить CURL-результаты Google, то происходит то же самое, потому что они могут обнаружить пользовательский агент, используемый файловыми_компонентами и cURL, и в результате блокируют эти пользовательские агенты. Также возможно, что сервер, к которому вы обращаетесь, также имеет IP-адрес, защищенный для таких методов.
В основном три общие причины, по которым команды не будут работать так же, как браузер в удаленной ситуации.
1) По умолчанию USER-AGENT заблокирован. 2) заблокирован IP-блок вашего сервера. 3) Удаленный хост имеет обнаружение прокси.
Ответ 7
Попробуйте включить расширение openssl в вашем php.ini, если оно отключено. Таким образом, я мог получить доступ к веб-сервису без каких-либо дополнительных аргументов, т.е.
Ответ 8
Я использую API AdWords, и иногда у меня такая же проблема. Мое решение состоит в том, чтобы добавить ini_set ('default_socket_timeout', 900); по файлу поставщик \googleads\googleads-php-lib\src\Google\AdsApi\AdsSoapClient.php строка 65
и в поставщик \googleads-php-lib\src\Google\AdsApi\Adwords\Reporting\v201702\ReportDownloader.php строка 126 ini_set ('default_socket_timeout', 900); $ requestOptions ['stream_context'] ['http'] ['timeout'] = "900";
Пакет Google перезаписывает параметр php.ini по умолчанию.
Ответ 9
Ничто из вышеперечисленного не работает для меня, поэтому после долгих исследований я закончил тем, что предварительно загрузил файл wsdl, сохранил его локально и передал этот файл в качестве первого параметра SoapClient.
Стоит упомянуть, что file_get_contents ($ serviceUrl) возвратил пустой ответ для меня, в то время как URL открылся в моем браузере. Вероятно, поэтому SoapClient также не смог загрузить документ wsdl. В итоге я скачал его с библиотекой php curl. Вот пример
Конечно, вы можете реализовать собственную политику кэширования для файла wsdl, поэтому он не будет загружаться при каждом запросе.
Ответ 10
Добавление ?wsdl в конце и вызов метода:
Ответ 11
Вы не можете винить код все время, иногда может быть ваш URL неверен, дважды проверьте URL
Я пробовал с SOAP 4.0.1, а также с SOAP 5.1.2. Я пробовал это на своих окнах, но также и на Windows Server 2008 Пытаюсь импортировать WSDL: Представлен диалог NT Authentication: Укажите учетные данные для аутентификации NT для заполнения имени пользователя, пароля, домена
Я могу открыть определение WSDL в Firefox:
После ввода логина и пароля
Но при попытке импортировать файл WSDL или при попытке импортировать файл wsdl с использованием URL-адреса местоположения
У меня такая же ошибка при использовании последней версии Soap UI 5.3. Никакого взлома с настройкой не помогло (прокси нет, аутентификация с упреждением и т. Д.). В конце концов, я импортировал WSDL с диска. Вызов операций через NTLM тогда работал без проблем. Похоже на ошибку в SoapUI при импорте WSDL через NTLM в некоторых средах.
Обновление: проверено, что включение анонимной аутентификации и отключение Windows auth в IIS решает проблему с импортом в SoapUI. Так что это определенно какая-то ошибка в SoapUI при импорте через NTLM.
Я тоже столкнулся с этой проблемой. Решение. Подключитесь к открытой сети (не офисной сети) и отправьте параметр прокси в SOAPUI как «Нет».
У меня такая же проблема. Предоставление учетных данных прокси-сервера решило проблему для меня.
Была та же проблема здесь, с WSDL, который работает в другой системе. Проблема была в настройке прокси-сервера, и, поскольку мне не нужен прокси-сервер, просто отключение его через меню браузера решило проблему для меня.
Поэтому вам нужно быть уверенным, что этот объект представлен в вашем WSDL или импортированных схемах.
Если ваш WSDL на 100% правильный и там есть "raquo", то я могу только предложить вам загрузить WSDL в локальный файл со всеми схемами, изменить schemaLocation на локальные относительные пути и попробовать импортировать этот локальный файл.
Вы измените настройки прокси-сервера в разделе «Настройки»> «Настройка прокси-сервера» на «Нет», это должно решить проблему аутентификации, с которой вы столкнулись.
Я пытаюсь сэкономить пропускную способность и включить файл wsdl в свое приложение flex / air. Какой формат URL мне следует использовать, чтобы загрузить этот файл вместо удаленного.
Я использую метод loadWSDL ().
РЕДАКТИРОВАТЬ: файл wsdl должен быть частью приложения. Я знаю, что могу использовать file: // some / path для локальных файлов, но не знаю, как загрузить файл, который находится внутри самого приложения.
4 ответа
Если файл локальный, просто используйте схему URI файла:
Если это не сработает, проверьте, есть ли песочница безопасности. функции блокируют его.
В приложениях AIR для доступа к файлам в приложениях каталог временного хранилища или собственный каталог приложения , однако вам необходимо использовать специальные схемы URL app: или app-storage: .
Как уже было сказано, вы всегда можете встроить файл в приложение, но, насколько я знаю, вы не сможете впоследствии постоянно изменять его, поскольку это не просто файл в файловой системе. Вероятно, лучший вариант для вас - это встроить этот файл, и, если позже вам понадобится его обновить, пусть приложение сохранит обновленную версию в File.applicationStorageDirectory (которую вы затем всегда проверяете перед использованием встроенной версии по умолчанию). Хотя я понятия не имею, возможно ли использование встроенных XML-файлов с классами WebService.
См. эту статью для получения информации о том, как встраивать внешний XML. файлы в ваше приложение. Вот как я это сделал:
Я использую приведенный ниже код в мобильном приложении flash builder air, и он работает, может помочь кому-то еще. Я получаю содержимое файла из веб-службы с помощью загрузчика URL-адресов и записываю его в XML-файл в каталоге документов моего приложения Air.
И в слушателе событий
Вы можете использовать каталог file.documentdirectory или application или выбранный вами каталог в соответствии с вашими потребностями, имейте в виду, что некоторые пути доступны только для чтения в целях безопасности. если вы хотите выполнить обратную запись в эти файлы, вы не сможете, но просто для чтения, рекомендуется поместить файлы туда.
Уф, это было некрасиво, поэтому отвечаю по ссылке. Спасибо за понимание hasseg и dirkgently
Сначала объявите переменные:
Затем загружаем wsdl:
Если у кого-то есть идея сделать это менее уродливым, дайте мне знать.
РЕДАКТИРОВАТЬ: Я только что заметил отредактированный ответ, поэтому вместо этого кода было достаточно использовать только:
wsdl должен быть частью приложения.
Вы пробовали встроить его в проект Flex / AIR в качестве ресурса? Прочтите это. Например, вы можете загрузить статические изображения, поставляемые с вашим приложением, указав source как:
у меня продолжают возникать странные проблемы. Главное, что я продолжаю получать следующую ошибку при попытке добавить WSDL в новый проект:
вы знаете, почему я могу получить эту ошибку?
У меня были аналогичные проблемы и работали вокруг них, сохраняя WSDL локально. Не забудьте также сохранить XSD-файлы. Возможно, потребуется изменить WSDL, чтобы указать подходящее расположение для XSDs.
в моем случае сервер, на котором была установлена служба, был настроен только для TLS. SSL не разрешен. Поэтому нужно обновить vmoptions SoapUI файл путем добавления
Вы можете найти файл vmoptions в папке установки SoapUI:
или измените настройки сервера, чтобы разрешить SSL
надеюсь, это поможет.
был вызван поддельным сертификатом. Если вы получите следующее в браузере
разрешение было импортировать сертификат в
который по умолчанию java используется SOAPUI
Если вы используете веб-приложение с портом по умолчанию 8080, попробуйте изменить порт на какое-либо другое значение и снова запустите приложение и снова запустите запрос SOAPUI. Поскольку у вас могут быть проекты истории в рабочей области SOAP UI с номером порта 8080, могут возникнуть проблемы. Пожалуйста, попробуйте, это может быть полезным для вас.
с уважением, Рави.
Это может быть проблема с выбором IPV6-адреса SOAP UI. Добавление следующей опции JVM исправило это для меня:
я добавил его здесь:
внутри файла wsdl найдите элемент import, который выглядит следующим образом:
измените атрибут location в приведенном выше элементе на местоположение ваших xsd-файлов, хранящихся локально, и он должен работать.
У меня была эта проблема при попытке использовать прокси-сервер SOCKS. Похоже, SoapUI не поддерживает Socks proxys. Вместо этого я использую приложение Boomerang Chrome.
моим решением было изменить java.безопасность:
комментарий синтаксис кода:
У меня была эта ошибка, и в моем случае проблема заключалась в том, что я использовал "localhost" в URL.
Я решил, что изменение слова localhost для соответствующего IP, (Windows + R -> cmd -> ipconfig) затем прочитайте IP и напишите его на URL, заменив слово "localhost"
это отлично работает на моем сервере WAMP, но не работает на главном сервере linux!?
что я пропустила?! :(
вызов URL из PHP возвращает ошибку
попробуйте задать агент пользователя явно, используя контекстный поток следующим образом:
чтобы проверить это, попробуйте следующее на вашем хосте linux:
этот запрос IPv6 не выполняется.
этот запрос IPv6 выполняется успешно.
оба этих запроса IPv4 завершаются успешно.
интересный случай:) я думаю, ваш хост linux разрешает ec.Европа.ЕС к его IPv6-адресу, и что ваша версия SoapClient не добавила строку агента пользователя по умолчанию.
кроме того (работает это или нет), проверьте, чтобы убедиться, что /tmp записывается вашим веб-сервером и что он не заполнен.
попробуйте это. Надеюсь, это поможет
503 означает, что функции работают и вы получаете ответ от удаленного сервера, отказывая вам. Если вы когда-либо пытались свернуть результаты google, происходит то же самое, потому что они могут обнаружить пользовательский агент, используемый file_get_contents и cURL, и в результате заблокировать эти пользовательские агенты. Также возможно, что сервер, к которому вы обращаетесь, также имеет IP-адрес, черный для таких практик.
в основном три общие причины, почему команды не будут работать так же, как браузер в удаленной ситуации.
1) пользовательский агент по умолчанию заблокирован. 2) блок IP вашего сервера заблокирован. 3) удаленный хост имеет обнаружение прокси-сервера.
эта проблема может быть вызвана отключением загрузчика сущностей libxml.
попробуй libxml_disable_entity_loader(false); перед созданием экземпляра SoapClient .
Это может быть полезно для кого-то, хотя точного ответа на этот вопрос нет.
мой url soap имеет нестандартный порт (например, 9087), и брандмауэр заблокировал этот запрос, и я каждый раз принимал эту ошибку:
ERROR-2017-12-19 20:44: 11 -- > Fatal Error-SOAP-ERROR: Parsing WSDL: не удалось загрузить из 'http://soalurl.тест: 9087 / orawsv?язык WSDL' : не удалось загрузить внешний объект "http://soalurl.тест: 9087 / orawsv?язык WSDL"
Я разрешил порт в брандмауэре и решить ошибку!
Я использую API AdWords, и иногда у меня такая же проблема. Мое решение-добавить безопасность('default_socket_timeout', 900); на файле поставщик\googleads\googleads-php-lib\src\Google\AdsApi\AdsSoapClient.PHP в строке 65
и в поставщик\googleads-php-lib\src\Google\AdsApi\Adwords\Reporting\v201702\ReportDownloader.php строка 126 безопасность('default_socket_timeout', 900); $requestOptions ['stream_context'] ['http'] ['timeout'] = "900";
Читайте также: