Как использовать службы WSDL на Php, размещенном на локальном хосте XAMPP - PullRequest
0 голосов
/ 03 сентября 2018

Я новичок в сети и php…

Я пытаюсь получить доступ к веб-сервису по ссылке wsdl, чтобы получить запрос ping. Указанный сервер находится в частной сети, доступ к которой осуществляется через локальную сеть, и он не подключен к сети. Я написал следующий index.php:

<?php
    require_once('api/checkserviceavailability.php');
    $url = "http://ipAddress:port/###########?wsdl";
    $action = "http://*action_Url*";    
    $respone = new RunProcess($url, $action);
    echo "OutPut ".$respone->FirstCall();   
?>

Остальная часть процесса находится в каталоге api / checkserviceavailability.php

<?php

error_reporting(E_ALL);
ini_set('display_errors',1);
class RunProcess{

    private $url ="http://ipAddress:port/###########?wsdl";
    private $action ="http://*action_Url*";

    public function __construct($url, $action){

        $this->url = $url;
        $this->action = $action;    
    }

    public function FirstCall(){

        $soapEnvelopeXml = $this->CreateSoapEnvelope();
        $WebRequest = $this->CreateWebRequest($this->url ,$this->action);
        return $parser = simplexml_load_string($WebRequest);

    }

    public function CreateWebRequest($url, $action){

        $url = $url;
        $headers = array(
            "Content-type: text/xml",
            "Content-length: " . strlen($action),
            "Connection: close",
        );

        $ch = curl_init(); 
        curl_setopt($ch, CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $action);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

        $data = curl_exec($ch); 
        return $data;

    }

    public function CreateSoapEnvelope(){

        $string = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"  xmlns:bas="http://*action_Url*"><soapenv:Header/><soapenv:Body><bas:checkServiceAvailabilityRequest><requestID/><requestDate/><requestOrigin/><requestMsg>PING</requestMsg></bas:checkServiceAvailabilityRequest></soapenv:Body></soapenv:Envelope>';

        $dom = new DOMDocument();
        return $dom->loadXML($string);

    }

}

Ранее я запускал код на C # и получил положительный ответ. Затем попытался разместить код в xampp в htdocs, что означает, что я буду запускать его с локального хоста, пока я подключен к локальной сети. Я не знаю, не проходит ли это или я терплю неудачу, потому что это LocalHost. И если да, что я могу сделать или использовать для запуска и тестирования кода на моей машине.

...