doulian8554 2018-09-03 18:11
浏览 74

如何在XAMPP localhost上托管的Php上使用WSDL服务

I am new to web and php…

I am trying to access web service via a wsdl link to get a ping request. The server in point is on a private network that is accessed via LAN and it is off net. I have written the following 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();   
?>

The rest of the process is on the directory 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);

    }

}

I had previously ran the code in C# and I got a positive response. Then tried to host the code in xampp in htdocs meaning I will be running it from local host while I am connected to the LAN. I do not know if it is not going through or I am failing because it is LocalHost. And if so, what can I do or use to run and test the code on my machine.

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 C++使用Gunplot
    • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
    • ¥15 matlab数字图像处理频率域滤波
    • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
    • ¥15 ELGamal和paillier计算效率谁快?
    • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
    • ¥15 Arcgis相交分析无法绘制一个或多个图形
    • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
    • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
    • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)