Перепрыгнеть в содержание


- - - - -

Ошибка API


6 ответов в эту тему

#1 OFFLINE   Alex2016

    Новичок


  • Участник
  • Пип
  • 20 сообщения
1

Добавлено 13 March 2016 - 21:14

Добрый день всем!
Взял самый первый пример по VBA

Sub Button4_Click()

Dim Request: Request = "{""jsonrpc"": ""2.0"", ""method"": ""SportsAPING/v1.0/listEventTypes"", ""params"": {""filter"":{}}, ""id"": 1}"
Dim Url: Url = "https://api.betfair.com/exchange/betting/json-rpc/v1/"
Dim ListEventTypesResponse As String: ListEventTypesResponse = SendRequest(Url, "T*******w", "c******************b0aok=", Request)
End Sub

Function SendRequest(Url, AppKey, Session, Data) As String
	On Error GoTo ErrorHandler:
	Dim xhr: Set xhr = CreateObject("MSXML2.XMLHTTP")

	With xhr
		.Open "POST", Url & "/", False
		.setRequestHeader "X-Application", AppKey
		.setRequestHeader "Content-Type", "application/json"
		.setRequestHeader "Accept", "application/json"
	End With
  
	If Session <> "" Then
		xhr.setRequestHeader "X-Authentication", Session
	End If
  
	xhr.send Data
	SendRequest = xhr.responseText
  
	If xhr.Status <> 200 Then
		Err.Raise vbObjectError + 1000, "Util.SendRequest", "The call to API-NG was unsuccessful. Status code: " & xhr.Status & " " & xhr.statusText & ". Response was: " & xhr.responseText
	End If
  
	Set xhr = Nothing
	Exit Function
	  
ErrorHandler:
	HandleError
End Function

При нажатии кнопки выдает вот такую ошибку:

{"jsonrpc":"2.0","error":{"code":-32099,"message":"ANGX-0003","data":{"exceptionname":"APINGException","APINGException":
{"errorDetails":"",
"errorCode":"INVALID_SESSION_INFORMATION",
"requestUUID":"prdang034-02170718-0085d83362"}}},"id":1}

Подскажите что не так.

#2 OFFLINE   VBman

    Специалист


  • Участник II
  • ПипПипПип
  • 203 сообщения
44

Добавлено 14 March 2016 - 07:15

По нажатии на кнопку вы запрашиваете у сервера список существующих видов спорта с их идентификаторами.. Сервер вам отвечает "INVALID_SESSION_INFORMATION".
О чем это говорит? О том что нет сессии, неверно получена сессия. Ссылка Здесь немного о сесииях написано

т.е. вот эта штука, которую вы подсовываете c******************b0aok= в SendRequest она неверна. Откуда вы ее берете?

Отредактировано VBman, 14 March 2016 - 07:15.


#3 OFFLINE   Alex2016

    Новичок


  • Участник
  • Пип
  • 20 сообщения
1

Добавлено 14 March 2016 - 17:43

Спасибо за ответ!

СообщенияVBman, on 14 March 2016 - 07:15, сказал:

т.е. вот эта штука, которую вы подсовываете c******************b0aok= в SendRequest она неверна. Откуда вы ее берете?
Я взял ее когда получал Application Key. И думал что он не будет меняться. Звездочки я специально подставил.

Еще раз спасибо за ссылку!

#4 OFFLINE   VBman

    Специалист


  • Участник II
  • ПипПипПип
  • 203 сообщения
44

Добавлено 14 March 2016 - 17:47

СообщенияAlex2016, on 14 March 2016 - 17:43, сказал:

Звездочки я специально подставил.
Да это понятно)

Сессия каждый раз меняется при логине

Отредактировано VBman, 14 March 2016 - 17:47.


#5 OFFLINE   Alex2016

    Новичок


  • Участник
  • Пип
  • 20 сообщения
1

Добавлено 15 March 2016 - 21:16

Доброй ночи, VBman!

Попробовал запустить ваш код BetfairNG.
Сразу первый вопрос в какой VS вы пишете? Я попробовал в VS2015Express.
Что-то не получилось...

Ошибок не выдавал но и результат тоже не дал.
Возвращает пустое значение.

В объяснении написано что запрос из VB должен быть поход на запрос с помощью Curl
curl -k -i -H "Accept: application/json" -H "X-Application: <AppKey>"
-X POST -d 'username=<username>&password=<password>' https://identitysso.betfair.com/api/login

"https://identitysso.betfair.com/api/login
?username=p###########t&password=V#########3&login=true
&redirectMethod=POST&product=home.betfair.int&url=https://www.betfair.com/"

В курл-запросе упоменается апп-кей, а в https нет.

Зачем мы тогда объявили глобальную переменную
Public mAppKey As String = "2###############Y"

Хотя в коде мы ее не используем.

#6 OFFLINE   VBman

    Специалист


  • Участник II
  • ПипПипПип
  • 203 сообщения
44

Добавлено 16 March 2016 - 08:01

Пишу на 10, вечером скомпилирую под 15.

Глобальный appkey для дальнейших запросов объявляем.

На начальном этапе мы получаем сессию через post. Поэтому ключ не нужен. Мы же не вводим ключ при авторизации на бирже через веб интерфейс, только логин и пароль.
А когда получили id сессии тут мы уже должны в следующих запросах в заголовке отправлять appkey, чтобы биржа нас идентифицировала как пользователя api и дала верный ответ.

Отредактировано VBman, 16 March 2016 - 08:03.


#7 OFFLINE   VBman

    Специалист


  • Участник II
  • ПипПипПип
  • 203 сообщения
44

Добавлено 16 March 2016 - 08:11

Да, в курле документировано отправка ключа.. Но на этом этапе он не нужен.