bardmauzer, on 11 December 2013 - 18:00, сказал:
Вопросы по программированию на API
#41 OFFLINE
Добавлено 11 December 2013 - 18:07
#42 OFFLINE
#43 OFFLINE
Добавлено 11 December 2013 - 18:51
Артений, on 11 December 2013 - 18:07, сказал:
#44 OFFLINE
Добавлено 11 December 2013 - 20:44
#45 OFFLINE
#46 OFFLINE
Добавлено 12 December 2013 - 08:01
#47 OFFLINE
Добавлено 12 December 2013 - 12:06
Sert, on 12 December 2013 - 08:01, сказал:
#48 OFFLINE
Добавлено 12 December 2013 - 12:28
#49 OFFLINE
Добавлено 13 December 2013 - 09:08
#50 OFFLINE
Добавлено 19 December 2013 - 16:25
#51 OFFLINE
Добавлено 23 January 2014 - 11:30
API-NG: C# Example forum.bdp.betfair.com/showthread.php?t=2164
Я привожу здесь свое C# решение для доступа к новому API. У меня были некоторые проблемы с выполнением официального примера, а мой вариант, мне кажется, более работоспособен. Приведенный код является прототипом, предназначенным для понимания основных действий. Поэтому вы не найдете в нем обработки ошибок, поскольку я запускаю код в отладчике.
Чтобы воспроизвести решение, вы должны создать новый проект в Visual Studio. Затем Вы должны добавить Newtonsoft Json (VS 2012 имеет хорошие возможности поиска online предоставлений). Далее добавляем новый класс "ResponseClass". В "Form 1" я бросил простую кнопку и добавил следующий код:
private void button1_Click(object sender, EventArgs e) { ResponseClass resp = new ResponseClass(); resp.ResponseTest(); }Наша цель - создать простой запрос с возвратом всех EventTypes. Фильтр должен быть пустым. Чтобы создать правильный Json я использую "Linq на JSON".
Переходим в форму ResponseClass, где добавляем следующие директивы использования:
using System.Net; using System.IO; using Newtonsoft.Json.Linq;В конечном счете, мы включаем Класс EventTypes. Класс пустой поскольку у нас нет критериев фильтра и моя первая цель в том, чтобы получить ответ json для выяснения работоспособности кода запроса.
public class EventTypes { }Вот код ResponseClass. Основан на официальном куске кода
https://api.developer.betfair.com/se...pageId=3834049
а для части JSON я использовал Json.Net Documentation
(james.newtonking.com/json/help/index.html) / Samples / LINQ to JSON / Create Json form anonymous Type
public class ResponseClass : WebClient { public void ResponseTest() { // 1. Request Object string token = "your_token"; string key = "your_app_key"; // delayed AppKey string address = "https://api.betfair.com/exchange/betting/rest/v1.0/listEventTypes/"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(address); request.Method = "POST"; request.ContentType = "application/json"; request.ContentLength = 0; request.Headers.Add(HttpRequestHeader.AcceptCharset, "UTF-8"); request.Accept = "application/json"; request.Headers.Add("X-Application", key); request.Headers.Add("X-Authentication", token); // 2. Market Filter (as JSON) JObject postData = CreateFilter(); // 3. Transfer MarketFilter in Request var bytes = Encoding.GetEncoding("UTF-8").GetBytes(postData.ToString()); request.ContentLength = bytes.Length; using (Stream stream = request.GetRequestStream()) { stream.Write(bytes, 0, bytes.Length); } // 4. Get WebResponse WebResponse response = GetWebResponse(request); // 5. Process Response using (Stream stream = response.GetResponseStream()) using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) { var jsonResponse = reader.ReadToEnd(); string result = jsonResponse; } } public JObject CreateFilter() { List<EventTypes> evt = new List<EventTypes> { new EventTypes { } }; JObject json_obj = JObject.FromObject(new { filter = new { } }); return json_obj; } }Как результат операции вы получите строку со всеми данными, но интерпретация этих данных будет значительно легче. Я долго бился, чтобы получить ответ. Сейчас мне кажется, что писать код в VB будет труднее, поскольку синтаксис в VB не совсем подходит для JSON. Конечно, найдется решение и для VB, но это будет сделано более опытными программистами, чем я. Я не претендую на то, что я представил наилучшее решение, но я имею такое решение, какое я понимаю и могу сформировать.
Далее следует ряд ответов, один из них про VB.NET
Благодарю за предоставленный результат вашего труда. Я был заинтригован вашим использованием Jobject в запросе и постараюсь рассмотреть это в vb.net, потому как не силен в использовании C# и преобразованиях языков. Тем не менее в данное время я могу получить все используя кошмарные строки с двойным цитированием:
'~~> Begin Request Strings Json Rpc Web Request Function CreateRequest(AppKey As String, SessToken As String, postData As String) Dim Url As String = "https://api.betfair.com/exchange/betting/json-rpc/v1/" Dim request As WebRequest = Nothing Dim dataStream As Stream = Nothing Dim response As WebResponse = Nothing Dim strResponseStatus As String = "" Dim reader As StreamReader = Nothing Dim responseFromServer As String = "" Try request = WebRequest.Create(New Uri(Url)) request.Method = "POST" request.ContentType = "application/json-rpc" request.Headers.Add(HttpRequestHeader.AcceptCharset, "ISO-8859-1,utf-8") request.Headers.Add("X-Application", AppKey) request.Headers.Add("X-Authentication", SessToken) '~~> Data to post such as ListEvents, ListMarketCatalogue etc Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData) '~~> Set the ContentLength property of the WebRequest. request.ContentLength = byteArray.Length '~~> Get the request stream. dataStream = request.GetRequestStream() '~~> Write the data to the request stream. dataStream.Write(byteArray, 0, byteArray.Length) '~~> Close the Stream object. dataStream.Close() '~~> Get the response. response = request.GetResponse() '~~> Display the status below if required '~~> Dim strStatus as String = CType(response, HttpWebResponse).StatusDescription strResponseStatus = CType(response, HttpWebResponse).StatusDescription '~~> Get the stream containing content returned by the server. dataStream = response.GetResponseStream() '~~> Open the stream using a StreamReader for easy access. reader = New StreamReader(dataStream) '~~> Read the content. responseFromServer = reader.ReadToEnd() '~~> Display the content below if required '~~>Dim strShowResponse as String = responseFromServer '~~>If required Catch ex As Exception '~~> Show any errors in this method for an error log etc Just use a messagebox for now MsgBox("CreateRequest Error" & vbCrLf & ex.Message) End Try Return responseFromServer '~~> Function Output '~~> Clean up the streams. reader.Close() dataStream.Close() response.Close() End Function '~~>Creates the requst for Data to be loaded '*** here is the Requst String for you to play around with the parameters Dim strCatReq = "{""jsonrpc"": ""2.0"",""method"":""SportsAPING/v1.0/listMarketCatalogue"",""params"":{""filter"":{""eventTypeIds"":[""7""],""marketCountries"":[""GB""] ,""marketTypeCodes"":[""WIN""]},""marketStartTime"":[],""venues"":[],""sort"":""FIRST_TO_START"",""maxResults"":""6"",""marketProjection"":[""RUNNER_DESCRIPTION"",""MARKET_START_TIME"",""EVENT""],""marketStatus"":""OPEN"" },""id"": 1}" Затем Код Формы, чтобы Отображать Ответ Code: Private Sub btnTestJson_Click(sender As Object, e As EventArgs) Handles btnTestJson.Click txtTester.Text = CreateRequest(txtLiveKey.Text, txtSessionToken.Text, strCatReq) End Sub
#52 OFFLINE
Добавлено 24 January 2014 - 09:38
Ф-ия Get Market Profit And Loss (exchange)
Не могу понять смысл этого параметра:
includeSettledBets N Boolean If Y, then the P&L calculation for each runner includes any profit and loss from any bets on runners that have already been settled. The default is N, which matches the default on Betfair.com.
Кто-нибудь может прояснить?
#53 OFFLINE
Добавлено 24 January 2014 - 11:58
#54 OFFLINE
Добавлено 24 January 2014 - 15:16
Sert, on 24 January 2014 - 11:58, сказал:
#55 OFFLINE
Добавлено 27 January 2014 - 13:48
Show a "what if" figure (prefixed »). If you have made a selection and entered the odds for the bet on the place bets tab, then this option allows you to see what effect the bet will have on your profit and loss assuming it is matched. Note that this does not include currently unmatched bets.
(источник: help.betfair.info/contents/itemId/i65767349/index.en.html)
Доступна ли аналогичная функциональность посредством API? Я не нашёл. Либо может кто подскажет формулы для расчёта этих значений?
Отредактировано Артений, 27 January 2014 - 13:50.
#56 OFFLINE
Добавлено 28 January 2014 - 22:30
Кто-нибудь пробовал там тред создать?
#57 OFFLINE
Добавлено 29 January 2014 - 00:13
Артений, on 28 January 2014 - 22:30, сказал:
Кто-нибудь пробовал там тред создать?
Надо зарегиться. я сам зарегился перед тем как серификат с ключем генерил для json(это обязательно). По поводу вопроса выше это надо считать в проге. Я вот думаю стоит ли? создавить тему с пошаговым переходом на json. Все не понятно возможно платным будет х.з.
По поводу регистрации когда ты буд. авторезирован на бф заходи в регистрацию там нужно ввести только новый логин и пасс для bdp остальное автоматом в форму ляжет.
Отредактировано AlexX, 29 January 2014 - 00:17.
#58 OFFLINE
Добавлено 29 January 2014 - 10:16
marketbook_status.png 9.3K 0 Количество загрузок
однако в описании этого перечисления их просто нет
marketbook_status2.png 3.11K 0 Количество загрузок
а если посмотреть официальные примеры, то, например, в коде на java этот status вообще имеет тип String. Как это понимать? С перечислением конечно проще работать, чем со строкой, но очень смущает несоответствие вариантов, да и не ясно какие значения могут быть?
#59 OFFLINE
Добавлено 29 January 2014 - 10:27
А значения будут те что вы указали в скрине MarketStatus
#60 OFFLINE
Добавлено 29 January 2014 - 11:04
AlexX, on 29 January 2014 - 00:13, сказал:
По поводу регистрации когда ты буд. авторезирован на бф заходи в регистрацию там нужно ввести только новый логин и пасс для bdp остальное автоматом в форму ляжет.
Так в том то и дело что я зарегистрирован там! Смотри на картинке вверху справа - Logged In написано.
А по поводу json - я пока его не смотрел по той же причине (про то что он платный типа с апреля или когда там), но там тоже нет такой функциональности ("what if?"), да?
Может кто подскажет формулы для датчинга (если это датчинг), в общем надо захеджировать рынок с несколькими исходами (например 10), ест-но интересует случай, когда есть заматченные ставки на несколько исходов.
Отредактировано Артений, 29 January 2014 - 11:11.