doushi3454
doushi3454
2016-11-12 17:51

使用Soap从PHP中获取WSDL中的元素

已采纳

i need to make a soap php to get coupons from https://planetwin365.com/Controls/CouponWS.asmx?wsdl

The WSDL in question is Planetwin365 . The snippet in question looks something like this:

    <wsdl:service name="CouponWS">
<wsdl:port name="CouponWSSoap" binding="tns:CouponWSSoap">
<soap:address location="http://planetwin365.com/Controls/CouponWS.asmx"/>
</wsdl:port>
<wsdl:port name="CouponWSSoap12" binding="tns:CouponWSSoap12">
<soap12:address location="http://planetwin365.com/Controls/CouponWS.asmx"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

I'm currently doing this:

$xml = new DOMDocument();
$xml->load($this->wsdl);
$version = $xml->getElementsByService('CouponWS')->item(0)->nodeValue;

he didn't work

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • dongpian6319 dongpian6319 4年前

    To create a soap client you do this:

    $client = new SoapClient("https://planetwin365.com/Controls/CouponWS.asmx?wsdl");
    

    You didn't say exactly which method you wanted to execute. There is a number of coupon related methods you can choose. You can list them out doing this:

    var_dump($client->__getFunctions());
    

    Which returns a number of operations you can perform:

    GetSaldoResponse GetSaldo(GetSaldo $parameters)
    GetDisbilitazioneGirocontiResponse GetDisbilitazioneGiroconti(GetDisbilitazioneGiroconti $parameters)
    GetStatoCouponResponse GetStatoCoupon(GetStatoCoupon $parameters)
    CouponPromozioneOKResponse CouponPromozioneOK(CouponPromozioneOK $parameters)
    GetStatoCouponAsincronoResponse GetStatoCouponAsincrono(GetStatoCouponAsincrono $parameters)
    GetSaldoResponse GetSaldo(GetSaldo $parameters)
    GetDisbilitazioneGirocontiResponse GetDisbilitazioneGiroconti(GetDisbilitazioneGiroconti $parameters)
    GetStatoCouponResponse GetStatoCoupon(GetStatoCoupon $parameters)
    CouponPromozioneOKResponse CouponPromozioneOK(CouponPromozioneOK $parameters)
    GetStatoCouponAsincronoResponse GetStatoCouponAsincrono(GetStatoCouponAsincrono $parameters)
    

    Choose the one you want to call. For example, let's take a look at GetStatoCoupon(). We can see that this method takes one parameter called $parameters and it is a GetStatoCoupon type structure. The method returns a GetStatoCouponResponse.

    What does the GetStatoCoupon type look like? To find out do:

    var_dump($client->__getTypes());
    

    And we can see that GetStatoCoupon looks like:

      [4]=>
    string(40) "struct GetStatoCoupon {
    int IDCoupon;
    }"
    

    We now have enough information to construct a basic call:

    $client = new SoapClient("https://planetwin365.com/Controls/CouponWS.asmx?wsdl");
    $parameters = new StdClass();
    $parameters->IDCoupon = 1234;
    $response = $client->GetStatoCoupon($parameters);
    

    My call results in an error because I don't know what values can go into IDCoupon, but hopefully this answers your question on how to create a SOAP client to get coupons.

    点赞 评论 复制链接分享
  • douhu4091 douhu4091 4年前

    I strongly advise you to use a WSDL to php generator to get a SDK/soap client easy to use from PackageGenerator

    点赞 评论 复制链接分享

相关推荐