簡體   English   中英

PHP的肥皂與類的電話

[英]php soap call with class

我有一個用Java編寫的Web服務,我想通過php使用它。 它需要一個類,例如“ UserDemand”,作為參數之一。 它以前可以工作(代碼是由其他人編寫的),但是我添加了一個屬性,因此不再起作用。 wsdl是這樣的:

<wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://statistic.bupt.com">
  <import namespace="http://bupt.com"/>
  <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
  <complexType name="UserDemand">
    <sequence>
      <element name="callSupport" type="xsd:int"/>
      <element name="caps" type="xsd:int"/>
      <element name="strategy" type="xsd:int"/>
      <element name="video" type="xsd:int"/>
    </sequence>
  </complexType>
 ...

已添加callSupport。 我用Java代碼測試了Web服務,它工作正常。

但是,當我將它與php一起使用(並使用CodeIgniter)時,Java端無法設置callSupport,它甚至永遠也不會調用函數“ setCallSupport”,但是策略和其他屬性仍然可以工作。 的PHP是下面的廣告:

$this->load->library('UserDemand');
$userDemand = new UserDemand();
$userDemand->callSupport = $call_support;
$userDemand->caps = $audio_count;
$userDemand->video = $media_count;
$userDemand->strategy = $strategy;

$client = new SoapClient($ws_base_url.$wsdl_class.'?wsdl');
$param = array($username, $userDemand);
$out = $client->__soapCall($wsdl_function, $param);

我只是添加callSupport。 那么,為什么我不能收到它,或者實際上收到了它卻無法設置?

我找到了解決問題的方法。 只需使用SoapVar即可解決。

$x = new SoapVar($userDemand,SOAP_ENC_OBJECT);
$param = array($username, $x);

但是我仍然對此感到困惑,如果我必須這樣做,那一定是以前做過的。 這意味着舊代碼不起作用,但確實起作用了!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM