я получил ошибку при вызове веб-сервиса с nusoap

я использовал nusoap для вызова веб-сервиса следующим образом:

<?php
      require 'nusoap/lib/nusoap.php';       
      $client = new nusoap_client('http://webserviceSite.com/webservices/globalservices.asmx?wsdl', 'WSDL');    

      $error = $client->getError();

      if ($error) {
        die("client construction error: {$error}\n");
      }    

      $answer = $client->call('GetCaptchaImage');

      $error = $client->getError();

      if ($error) {
        print_r("res:".$client->response);
        print("\n");
        print_r("debug:".$client->getDebug());
        die();
      }    

      print_r($answer);  
              ?>

но я получил эту ошибку: `"ошибка wsdl: ОШИБКА HTTP: не удалось открыть соединение сокета с сервером http://webserviceSite.com/webservices/globalservices.asmx?wsdl до подключения(). Часто возникает проблема с поиском имени хоста».

пожалуйста, помогите мне. я не могу понять эту ошибку


person safapoor    schedule 17.06.2014    source источник
comment
Похоже, это связано с брандмауэром, время запроса истекает, потому что он не может пройти через брандмауэр и просто умирает. У меня та же проблема, запрос WSDL работает на моем сервере разработки без брандмауэра, но выдает ту же ошибку, что и вы, на моем рабочем сервере.   -  person Grant    schedule 22.06.2017


Ответы (1)


Эта ошибка именно то, что она говорит: «Не удалось открыть соединение сокета с сервером». Предыдущий клиент связи SOAP должен иметь возможность устанавливать соединение HTTP TCP (обычно через порт 80). Эта ошибка означает, что ваш клиент не может установить такое соединение. Это может быть вызвано многими факторами: брандмауэр между клиентом и сервером, серверу не нравится ваш клиент, веб-прокси на пути не позволяет вам подключиться, отсутствие маршрутизации и так далее.

Из окна, в котором вы запускаете свой клиент, вы сможете сделать:

telnet webserviceSite.com 80

и вы должны увидеть что-то вроде:

Connected to webserviceSite.com.
Escape character is '^]'

Затем, если вы наберете несколько символов и нажмете Enter, вы должны получить страницу с ошибкой с удаленного сервера, и соединение должно закрыться. Если вы не можете заставить свой клиентский ящик надежно подключаться к удаленному http-хосту, ваш вызов мыла потерпит неудачу.

person Vladimir Bashkirtsev    schedule 17.06.2014
comment
Я проверяю класс мыла, но его нет. Поэтому я пытаюсь использовать класс nusoap. Мне нужно установить мыло на хост-сервере? - person safapoor; 17.06.2014