2016-06-28 7 views
0

石鹸で完全に新しいです。 私はこのWSDLリンクを持っています。 石鹸XMLとPHP

メソッド名は "Price"です。

このようなリクエストを設定する必要があります。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <tem:Price> 
     <!--Optional:--> 
     <tem:request> 
      <!--Optional:--> 
      <tem:Username>MyUsername</tem:Username> 
      <!--Optional:--> 
      <tem:Password>Mypassword</tem:Password> 
      <tem:Customer>002399</tem:Customer> 
      <!--Optional:--> 
      <tem:FromRes>23245</tem:FromRes> 
      <!--Optional:--> 
      <tem:ToRes>12334</tem:ToRes> 
      <tem:Weight>39</tem:Weight> 

     </tem:request> 
     </tem:Price> 
    </soapenv:Body> 
</soapenv:Envelope> 

しかし、どのように私はこれをPHPで記述しますか?

これまで私がこれを書いてきましたが、それはうまくいきません。すべてが間違っていると私は驚いていない。

$client = new SoapClient('http://mylink.com/somehint.asmx?WSDL', array('trace' => 1)); 
$res = $client->SoapFunction(array('Username'=>'Myusername','password'=>'Mypassword','Customer'=>'002399')); 
+0

トレースオプションをtrueとして追加し、リクエストが正しく生成されていることを確認します。 – Amila

+0

@Amilaは答えてくれてありがとう、私はそれを試してきました。また、メソッドが存在することを__getFunctions()で確認しました。 – Cinta

+0

問題がある場合は、最初にSoapUIを使ってチェックしてみてください。 – Amila

答えて

0

あなたの問題を解決するのに役立つ可能性があるコードを使用します。私はあなたのデータから、それに適応しようとしましたが、おそらくあなたはそれを少し^^

$params = array('request'=> 
         array(
           'Username' => 'Myusername', 
           'Password' => 'Mypassword', 
           'Customer' => 'Mycustomer', 
           'FromRes' => 'Mypfromres', 
           'ToRes' => 'Myptores', 
           'Weight' => 'Mypweight' 
         )); 

$wsdl = 'http://mylink.com/somehint.asmx?wsdl'; 

$options = array(
       'uri'    => 'http://schemas.xmlsoap.org/soap/envelope/', 
       'style'    => SOAP_RPC, 
       'use'    => SOAP_ENCODED, 
       'soap_version'  => SOAP_1_1, 
       'cache_wsdl'   => WSDL_CACHE_NONE, 
       'connection_timeout' => 15, 
       'trace'    => true, 
       'encoding'   => 'UTF-8', 
       'exceptions'   => true, 
       ); 

try { 
    $soap = new SoapClient($wsdl, $options); 
    $data = $soap->Price($params); 
} 

catch(Exception $e) { 
    die($e->getMessage()); 
} 

print_r($data); 

よろしくを微調整する必要があります。

関連する問題