首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有betfair的soap api

带有betfair的soap api
EN

Stack Overflow用户
提问于 2013-06-21 21:00:31
回答 1查看 696关注 0票数 0

这是我第一次使用BetFair的SOAP API,我创建了一个XML文件和一个调用该文件的文件。我不明白如何调用此函数并获得输出。我已经创建了下面的XML文件:

代码语言:javascript
复制
<?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给出了这个登录接口的链接:https://api.betfair.com/global/v3/BFGlobalService.wsdl

代码语言:javascript
复制
<?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);
?>

我不知道为什么它不工作,你能帮我解决这个问题吗?提前谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2013-06-23 21:05:36

我会避免使用专用的SOAP库;根据我的经验,它们通常无法工作,因为不同服务器实现SOAP规范的方式不一致。改用简单的HTTP/HTTPS库,标头如下

代码语言:javascript
复制
SOAPAction: urn:login 
Content-Length: #{myContentLength}
Content-Type: text/xml
User-Agent: #{myUserAgent}

和以下有效负载(假设您使用的是免费API):

代码语言:javascript
复制
<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>

在我看来,您为login元素使用了错误的名称空间;应该是“https://api.betfair.com/..”不是“http://www.betfair.com/..”。

祝好运。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17235870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档