Good afternoon, yes i am a newby so pls keep it simple.
Yesterday I started a small project where I have to make an API call and
receive back from that the long xml transcript down below.
Now, not knowing about XML I have experienced one or 2 issues.
Firstly, this is the code I have created to make the call and then extract a
few bits of information:
'Create the web request
Dim request As HttpWebRequest =
WebRequest.Crea te(https://api.games.betfair.com/rest/v...sername=******)
request.Method = "GET"
request.Timeout = 5000
'Add headers to the web request
request.Headers .Add("gamexAPIA gent", ********@hotmai l.co.uk.myGames .4.0)
request.Headers .Add("gamexAPIA gentInstance",
"0d69ee8290ee2f 9b336c1f060e349 7a5")
request.Headers .Add("gamexAPIP assword", "*******")
'Get response
Dim response As HttpWebResponse = request.GetResp onse()
Dim reader As StreamReader = New StreamReader(re sponse.GetRespo nseStream)
Dim objDoc As XmlReader = XmlReader.Creat e(reader)
objDoc.MoveToCo ntent()
objDoc.ReadToFo llowing("status ")
Me.StatusTextBo x.Text = objDoc.ReadElem entContentAsStr ing
objDoc.ReadToFo llowing("game")
Me.GameIDTextBo x.Text = objDoc.GetAttri bute("id").ToSt ring
objDoc.ReadToFo llowing("round" )
Me.RoundNumberT extBox.Text = objDoc.ReadElem entContentAsStr ing
objDoc.ReadToFo llowing("bettin gWindowPercenta geComplete")
Me.PercentageTi meTextBox.Text = objDoc.ReadElem entContentAsStr ing
CallLabel.Text = "captured"
Catch ex As Exception
CallLabel.Text = "not captured"
End Try
For the most part this works fine but what I would rather do, is point
directly to the nodes listed in the code directly, now I have some tell me
"//channelSnaphot/channel/status" is the way to go through a
XMLSelectSingle Node, but I have tried and failed using that method.
Is there anyone out the who can improve on my code so I can make 20 or 30
direct calls to the nodes in the Stream Response I receive below? I am
pleased to say the layout of the response will never change so thats not an
issue i need to address.
Regards
API Call Returns the following:
<channelSnapsho t>
<channel gameType="POKER " id="1444074" name="Exchange Poker Texas
Hold'em">
<status>RUNNING </status>
<game id="1817283">
<round>3</round>
<bettingWindowT ime>45</bettingWindowTi me>
<bettingWindowP ercentageComple te>24</bettingWindowPe rcentageComplet e>
<gameData>
<object name="Hand 1">
<description>On e Pair, Fours, Ace High,
with Q, 8 Kickers</description>
<status>IN_PLAY </status>
<property name="Card 1" value="20"/>
<property name="Card 2" value="29"/>
</object>
<object name="Hand 2">
<description>On e Pair, Sixes, Ace
High</description>
<status>IN_PLAY </status>
<property name="Card 1" value="5"/>
<property name="Card 2" value="44"/>
</object>
<object name="Hand 3">
<description>On e Pair, Fours, Ace High,
with Q, 6 Kickers</description>
<status>IN_PLAY </status>
<property name="Card 1" value="31"/>
<property name="Card 2" value="42"/>
</object>
<object name="Hand 4">
<description>Ac e High</description>
<status>IN_PLAY </status>
<property name="Card 1" value="49"/>
<property name="Card 2" value="45"/>
</object>
<object name="Community Cards">
<description/>
<status>N/A</status>
<property name="Card 1" value="3"/>
<property name="Card 2" value="13"/>
<property name="Card 3" value="11"/>
<property name="Card 4" value="NOT
AVAILABLE"/>
<property name="Card 5" value="NOT
AVAILABLE"/>
</object>
</gameData>
<markets currency="GBP">
<market id="5615051">
<status>ACTIV E</status>
<commissionRate >2.5</commissionRate>
<marketType>WIN _ONLY</marketType>
<selections type="MainBets" >
<selection id="658439">
<name>Hand 1</name>
<resource
href="https://api.games.betfa ir.com/rest/v1/selection/tradeActivity?m arketId=5615051 &selectionId=65 8439"
responseType="s electionTradeAc tivity" title="Trade Activity"/>
<status>IN_PLAY </status>
<amountMatched> 22.74</amountMatched>
<bestAvailableT oBackPrices>
<price
amountUnmatched ="204.42">6. 6</price>
<price
amountUnmatched ="381.64">6. 55</price>
<price
amountUnmatched ="576.92">6. 5</price>
</bestAvailableTo BackPrices>
<bestAvailableT oLayPrices>
<price
amountUnmatched ="74.6">6.7</price>
<price
amountUnmatched ="504.74">6. 75</price>
<price
amountUnmatched ="551.44">6. 8</price>
</bestAvailableTo LayPrices>
</selection>
<selection id="658440">
<name>Hand 2</name>
<resource
href="https://api.games.betfa ir.com/rest/v1/selection/tradeActivity?m arketId=5615051 &selectionId=65 8440"
responseType="s electionTradeAc tivity" title="Trade Activity"/>
<status>IN_PLAY </status>
<amountMatched> 88.68</amountMatched>
<bestAvailableT oBackPrices>
<price
amountUnmatched ="306.66">1. 72</price>
<price
amountUnmatched ="4127.36">1.71 </price>
<price
amountUnmatched ="59.63">1.7 </price>
</bestAvailableTo BackPrices>
<bestAvailableT oLayPrices>
<price
amountUnmatched ="99.98">1.7 3</price>
<price
amountUnmatched ="2188.96">1.74 </price>
<price
amountUnmatched ="2200.77">1.75 </price>
</bestAvailableTo LayPrices>
</selection>
<selection id="658441">
<name>Hand 3</name>
<resource
href="https://api.games.betfa ir.com/rest/v1/selection/tradeActivity?m arketId=5615051 &selectionId=65 8441"
responseType="s electionTradeAc tivity" title="Trade Activity"/>
<status>IN_PLAY </status>
<amountMatched> 102.9</amountMatched>
<bestAvailableT oBackPrices>
<price
amountUnmatched ="17.99">45. 0</price>
<price
amountUnmatched ="140.4">44. 5</price>
<price
amountUnmatched ="2.19">44.0 </price>
</bestAvailableTo BackPrices>
<bestAvailableT oLayPrices>
<price
amountUnmatched ="33.52">46. 0</price>
<price
amountUnmatched ="53.76">46. 5</price>
<price
amountUnmatched ="79.76">47. 0</price>
</bestAvailableTo LayPrices>
</selection>
<selection id="658442">
<name>Hand 4</name>
<resource
href="https://api.games.betfa ir.com/rest/v1/selection/tradeActivity?m arketId=5615051 &selectionId=65 8442"
responseType="s electionTradeAc tivity" title="Trade Activity"/>
<status>IN_PLAY </status>
<amountMatched> 1020.0</amountMatched>
<bestAvailableT oBackPrices>
<price
amountUnmatched ="158.07">4. 0</price>
<price
amountUnmatched ="198.19">3. 98</price>
<price
amountUnmatched ="631.28">3. 96</price>
</bestAvailableTo BackPrices>
<bestAvailableT oLayPrices>
<price
amountUnmatched ="103.84">4. 06</price>
<price
amountUnmatched ="612.72">4. 08</price>
<price
amountUnmatched ="914.6">4.1 </price>
</bestAvailableTo LayPrices>
</selection>
</selections>
</market>
</markets>
</game>
</channel>
</channelSnapshot >