0

BetFair の SOAP API を使用するのは初めてで、1 つの XML ファイルと、そのファイルを呼び出す 1 つのファイルを作成しました。これを呼び出して出力を取得する方法がわかりません。以下の XML ファイルを作成しました。

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
    <login xmlns="http://www.betfair.com/publicapi/v3/BFGlobalService/">
        <request>
            <locationId xmlns="">0</locationId>
            <username xmlns="">usrname</username>
            <password xmlns="">password</password>
            <productId xmlns="">18</productId>            
            <vendorSoftwareId xmlns="">0</vendorSoftwareId>
        </request>
    </login>
</soap:Body>
</soap:Envelope>

このファイルを呼び出すために、これを行うための 1 つの php ファイルも作成しました。BetFair はログイン API のリンクを提供しています: https://api.betfair.com/global/v3/BFGlobalService.wsdl

<?php
    $get_data = file_get_contents("http://pixelonsell.com/dev2/betfair/login.xml");
    $b = html_entity_decode($get_data);
    $data= urlencode($b);
    print_r($data);
    $client = new SoapClient("https://api.betfair.com/global/v3/BFGlobalService.wsdl");
    $result = $client->LoginReq($data);

    print_r($result);
?>

なぜ機能しないのかわかりません。これで私を助けてもらえますか?前もって感謝します。

4

1 に答える 1

1

専用の SOAP ライブラリの使用は避けたいと思います。私の経験では、さまざまなサーバーが SOAP 仕様を実装する方法に一貫性がないため、うまくいかないことがよくあります。代わりに、次のヘッダーを持つ単純な HTTP/HTTPS ライブラリを使用してください

SOAPAction: urn:login 
Content-Length: #{myContentLength}
Content-Type: text/xml
User-Agent: #{myUserAgent}

および次のペイロード (Free API を使用していると仮定):

<SOAP-ENV:Envelope xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <SOAP-ENV:Body>
    <m:login xmlns:m="https://api.betfair.com/global/v3/BFGlobalService">
      <m:request>
        <username>#{myUsername}</username>
        <password>#{myPassword}</password>
        <locationId>0</locationId>
        <vendorSoftwareId>0</vendorSoftwareId>
        <productId>82</productId>
      </m:request>
    </m:login>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

ログイン要素に間違った名前空間を使用しているようです。「 http://www.betfair.com/ ..」ではなく「https://api.betfair.com/ ..」にする必要があります。

幸運を。

于 2013-06-23T13:05:36.480 に答える