Интеграция с AviaSales

Маленький пятничный подарок, реализованный за 1 час времени с нуля.

Хотите, чтобы в модуле управления командировками можно было получать реальные цены на авиабилеты? Вот кусок кода, который можно вставить в бадишку для поиска билетов. Это образец, дальше сами сообразите. А полное решение будет в новой книге от меня 😉

 

REPORT ZAVIASALES.

DATAlo_http_client     TYPE REF TO if_http_client,
lo_rest_client     TYPE REF TO cl_rest_http_client,
lv_url             TYPE        string,
lv_body            TYPE        string,
lo_response    TYPE REF TO     if_rest_entity.
cl_http_client=>create_by_url(
EXPORTING
url              ‘http://api.travelpayouts.com’
IMPORTING
client                   lo_http_client    » HTTP Client Abstraction
exceptions
argument_not_found 1
plugin_not_active  2
internal_error     3
others             4
).
CREATE OBJECT lo_rest_client
EXPORTING
io_http_client lo_http_client.

IF lo_http_client IS BOUND AND lo_rest_client IS BOUND.
lv_url ‘/v1/prices/cheap?origin=MOW&destination=HKT&depart_date=2015-11&return_date=2015-12&token=ВАШТОКЕН’.
cl_http_utility=>set_request_uri(
EXPORTING
request lo_http_client->request    » HTTP Framework (iHTTP) HTTP Request
uri     lv_url                     » URI String (in the Form of /path?query-string)
).

* HTTP GET
lo_rest_client->if_rest_client~get).

* HTTP response
lo_response lo_rest_client->if_rest_client~get_response_entity).

* HTTP return status
DATA(http_status)   lo_response->get_header_field‘~status_code’ ).

* HTTP JSON return string
DATA(json_responselo_response->get_string_data).
write json_response.

ENDIF.

Результат выглядит вот так. И его уже можно разобрать на части, сложить в поля.

{«success»: true, «data»: {«HKT»:{«0»:{«price»:36693,»airline»:»SU»,»flight_number»:274,»departure_at»:»2015-11-24T19:15:00Z»,»return_at»:»2015-12-09T11:40:00Z»,»expires_at»:»2015-10-19T14:18:50Z»},»1″:{«price»:25654,»airline»:»CA»,»flight_number»:910,»departure_at»:»2015-11-22T18:55:00Z»,»return_at»:»2015-12-10T01:40:00Z»,»expires_at»:»2015-10-17T18:14:29Z»},»2″:{«price»:26837,»airline»:»EY»,»flight_number»:68,»departure_at»:»2015-11-19T12:50:00Z»,»return_at»:»2015-12-15T06:55:00Z»,»expires_at»:»2015-10-18T14:54:47Z»},»3″:{«price»:37979,»airline»:»SU»,»flight_number»:22,»departure_at»:»2015-11-16T16:10:00Z»,»return_at»:»2015-12-14T01:50:00Z»,»expires_at»:»2015-10-19T13:11:55Z»}}}}

Интеграция с AviaSales: 2 комментария

  1. Bully

    правильнее параметры задавать не через URL, а через метод, который управляет GET-параметрами.

    совсем было бы вкусно, если бы полученный JSON ты при помощи XLT положил в ABAP-переменные. 🙂

  2. VirVit Автор записи

    Это же затравка 🙂 Так бы неплохо и проксирующие классы сделать 😉

Добавить комментарий