2013-06-21 4 views
0

BetFair에서 SOAP API를 처음 사용했습니다. 하나의 XML 파일과이 파일을 호출 할 하나의 파일을 만들었습니다. 나는 이것을 어떻게 불러서 출력을 얻을 수 있는지 이해하지 못하고있다. 아래의 XML 파일을 만들었습니다 :betfair로 soap api

<?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> 

이 파일을 불러 오려면 여기에 하나의 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); 
?> 

내가 모르겠어요; 이걸로 나를 도울 수 있니? 미리 감사드립니다.

답변

1

전용 SOAP 라이브러리는 사용하지 않는 것이 좋습니다. 내 경험상 서로 다른 서버가 SOAP 사양을 구현하는 방식의 불일치 때문에 종종 작동하지 않습니다.

<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> 

그것은 당신이있는 것처럼 나에게 보이는 다음 헤더

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

하고 다음 페이로드 (당신이 무료 API를 사용하는 가정)으로, 대신에 간단한 HTTP/HTTPS 라이브러리를 사용하여 login 요소에 잘못된 네임 스페이스를 사용합니다. 'https://api.betfair.com/ ..'이 아니어야합니다. 'http://www.betfair.com/ ..'이 아닙니다.

행운을 빈다.

+0

+1 이것은 OP가 반드시 동화되어 사용되어야한다는 좋은 설명이었습니다. 어쨌든, 그것은 점수 채점에 관한 것이 아니지만 이것은 내가 도움이되었을 것입니다 !! –