Исключение SoapFault: не удалось подключиться к хосту - PullRequest
28 голосов
/ 01 декабря 2010

Иногда не удается вызвать веб-службу.

Эта проблема возникает постоянно.

В чем может быть проблема?

Error:
    SoapFault exception: [HTTP] Could not connect to host in 
    0 [internal function]: SoapClient->__doRequest('<?xml version="...', http://.', '', 1, 0)

Ответы [ 22 ]

2 голосов
/ 12 декабря 2017

Я наконец нашел причину - из-за того, что библиотека не может найти пакет CA в вашей системе. PHP> = v5.6 по умолчанию автоматически устанавливает verify_peer в true. Однако не все системы имеют известный CA-пакет на диске.

Вы можете попробовать одну из следующих процедур:

1.Если в вашей системе есть файл CA, установите openssl.cafile или curl.cainfo в вашем php.ini на путь вашего файла CA.

2.Ручно укажите местоположение файла SSL CA

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);  
curl_setopt($cHandler, CURLOPT_CAINFO, $path-of-your-ca-file);

3.disabled verify_peer

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
1 голос
/ 12 июня 2015

В моем случае адрес службы в wsdl неверен.

Мой URL-адрес wsdl.

https://myweb.com:4460/xxx_webservices/services/ABC.ABC?wsdl

Но адрес службы в этом xml-результате:

<soap:address location="http://myweb.com:8080/xxx_webservices/services/ABC.ABC/"/>

Я просто сохраняю этот xml в локальный файл и меняю адрес службы на.

<soap:address location="https://myweb.com:4460/xxx_webservices/services/ABC.ABC/"/>

Удачи.

1 голос
/ 06 мая 2011

Для меня это была проблема с DNS. Серверы имен моего VPS перестали работать, поэтому я переключился на Google, отредактировав свой /etc/resolv.conf так: nameserver 8.8.8.8 nameserver 8.8.4.4

1 голос
/ 16 мая 2016

Со мной эта проблема в базовом адресе в app.config службы WCF: Когда я использовал:

<baseAddresses><add baseAddress="http://127.0.0.1:9022/Service/GatewayService"/> </baseAddresses>

все в порядке, если вы используете .net для соединения с публичным ip или доменом.

Но при использовании PHP SoapClient для подключения к "http://[online ip]:9022/Service/GatewayService" возникает исключение "Coulod not connect to host"

Я изменил baseAddress на [online ip]: 9022 и все в порядке.

1 голос
/ 26 июня 2012

Если на вашем сервере установлен брандмауэр, обязательно откройте порт, используемый SOAP.

В моем случае мне пришлось открыть порт 1664.

iptables -t filter -A INPUT -p tcp --dport 1664 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 1664 -j ACCEPT
1 голос
/ 11 апреля 2013

Если решение ujava не может вам помочь, вы можете попытаться использовать try / catch, чтобы поймать этого смертельного, это прекрасно работает для меня.

0 голосов
/ 14 июля 2017

Для меня это была проблема в сервисе httpd (Fedora 24).Простой перезапуск сделал свое дело:

sudo service httpd restart
0 голосов
/ 21 ноября 2016

Чтобы помочь другим людям, которые столкнулись с этой ошибкой, URL-адрес в <soap:address location="https://some.url"/> имел недействительный сертификат и вызвал ошибку.

0 голосов
/ 01 декабря 2010

Это, скорее всего, относится к проблеме подключения. Это может быть связано с тем, что ваше интернет-соединение не работает или веб-служба, которую вы пытаетесь использовать, не работает Я предлагаю использовать этот сервис, чтобы увидеть, если веб-сервис онлайн или нет: http://downforeveryoneorjustme.com/

0 голосов
/ 05 июля 2018

Если соединение через SSL, может быть проблема с сервером, а не с клиентом (это мой случай).

В версиях PHP более 5.6 и 7 важно проверить CipherSuite, используемый в сертификате сервера. Существует полный список шифров, разрешенных этими версиями, и полный список шифров, которых нет в этой веб-ссылке: https://wiki.mozilla.org/Security/Server_Side_TLS#Recommended_Ciphersuite

Если используемый шифр недопустим (это устаревший алгоритм), SoapClient получает сообщение «Не удалось подключиться к хосту», и в нем больше нет следов.

Используемый шифр может быть проверен такими клиентами, как SoapUI, например, в разделе «SSL Info».

В интернете нет форума, обсуждающего это.

Проверьте это тоже: http://php.net/manual/en/migration56.openssl.php

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