HTTP_GET

Jeśli programujesz, administrujesz, integrujesz i masz wątpliwość lub obawę, to właśnie najlepsze miejsce dla Ciebie. Pisz śmiało...
mektos
Posty: 19
Rejestracja: wt kwie 19, 2011 3:14 pm
Has thanked: 4 times
Been thanked: 1 time

Re: HTTP_GET

Post autor: mektos »

załącznik
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

dominik.tylczynski
Posty: 7295
Rejestracja: wt kwie 03, 2007 4:05 pm
Has thanked: 1202 times
Been thanked: 1120 times

Re: HTTP_GET

Post autor: dominik.tylczynski »

Moim zdaniem podajesz zły URL tj. http://195.136.199.105/kursy/kursya.html
Moja przeglądarka nie potrafi tego adresu otworzyć, natomiast z http://www.nbp.pl/kursy/kursya.html radzi sobie bez problemu.

wojtas7
Posty: 783
Rejestracja: pt mar 14, 2008 12:51 pm
Has thanked: 55 times
Been thanked: 155 times

Re: HTTP_GET

Post autor: wojtas7 »

Wygląda na to że przekleiłeś kod bezpośrednio a NBP zmienił adres w międzyczasie.
Spróbuj przeczytać kod (w końcu ma być czytelny w założeniach :-)) bo tak to możesz przez to nie przebrnąć i napotkasz co chwilę jakiś problem.

mektos
Posty: 19
Rejestracja: wt kwie 19, 2011 3:14 pm
Has thanked: 4 times
Been thanked: 1 time

Re: HTTP_GET

Post autor: mektos »

Staram się czytać ten kod, ale łatwo mi nie idzie.
W mojej firmie wdrożyli SAPa ale nikogo nie wysłali na kursy z ABAPa...
Staram się to zrozumieć czytając różne poradniki i książki.
Póki co jestem na poziomie napisania jakiegoś programu (raportu) który pobierze dane z SAPowych tabel jakoś je przemieli i pokaże końcowy raport :)

Ostatnio wyszła potrzeba automatyzacji wczytywania kursów walutowych do SAPa no i znalazłem ten wątek na forum.

Podany kod odwołuje się do funkcji których jeszcze nie opanowałem (pobieranie danych ze stron www i zapisywanie ich w tabelach SAP itp...)

Staram się na starcie, aby moduł http_get coś mi zwrócił (tylko nie błąd).
Podaje różne adresy stron nbp, ale cały czas wywala mi to samo co wcześniej przesłałem (nieprawidłowe dane).
Próbowałem z takimi adresami
http://www.nbp.pl/kursy/xml/a232z151130.xml
http://www.nbp.pl/kursy/xml/dir.txt
http://www.nbp.pl/kursy/kursya.html
http://195.149.95.21/kursy/kursya.html
http://195.136.199.105/kursy/kursya.html

Nie wiem co dalej z tym robić :(

dominik.tylczynski
Posty: 7295
Rejestracja: wt kwie 03, 2007 4:05 pm
Has thanked: 1202 times
Been thanked: 1120 times

Re: HTTP_GET

Post autor: dominik.tylczynski »

Jeśli żaden z podanych przez Ciebie adresów nie działa to najpewniej twój SAP nie ma możliwości połączenia się zewnętrznymi adresami WWW. To jest temat do sieciowców w twojej firmie.

wojtas7
Posty: 783
Rejestracja: pt mar 14, 2008 12:51 pm
Has thanked: 55 times
Been thanked: 155 times

Re: HTTP_GET

Post autor: wojtas7 »

Tak jak pisałem wcześniej i Dominik dobrze podpowiada - sprawdź z Basisem jakie proxy jest ewentualnie dostępne żeby SAP mógł ściągnąć stronę www z Internetu. Najprawdopodobniej będą musieli dodać wyjątek w zaporze sieciowej na żądane adresy, więc przemyśl które adresy potrzebujesz.

mektos
Posty: 19
Rejestracja: wt kwie 19, 2011 3:14 pm
Has thanked: 4 times
Been thanked: 1 time

Re: HTTP_GET

Post autor: mektos »

Tylko z tego co zrozumiałem z tego wątku to nbp codziennie wystawia plik z kursami walutowymi o innej nazwie. Skoro codziennie inna nazwa to i inny adres do pliku...
Ciężko podać konkretny adres do firewalla.

Jak podaje proxy które dostałem od sieciowców to niby coś się łączy...
Pokazuje czas wykonania: 79.562 Mikrosek (co oznacza że chyba jest jakieś połączenie)
(Jak nie podam proxy lub podam fałszywe proxy to myśli dużo dłużej i pokazuje ostatecznie inny błąd)

W RESPONSE_HEADERS pokazuje mi takie coś:

HTTP/1.1 400 Bad Request ( NieprawidÅ#owe dane. ) - pewnie jednak to jakieś problemy z połączeniem
Connection: close
Proxy-Connection: close
Pragma: no-cache
Cache-Control: no-cache
Content-Type: text/html
Content-Length: 1946

Pogadam jeszcze z basisem i sieciowcami.

W każdym razie dziękuje za wskazówki

wojtas7
Posty: 783
Rejestracja: pt mar 14, 2008 12:51 pm
Has thanked: 55 times
Been thanked: 155 times

Re: HTTP_GET

Post autor: wojtas7 »

Dokładnie to program pobiera stronę www z adresu http://www.nbp.pl/Kursy/KursyA.html i szuka w nim tekstu "tabela w formacie .XML" i na podstawie tego wyciąga link do aktualnego kursu np. z dziś http://www.nbp.pl/kursy/xml/a232z151130.xml

Zależnie od tego czy Twój SAP jest w stanie ściągnąć pliki z nbp.pl czy po adresie IP musisz mieć odpowiednie wyjątki w zaporze.

fidley
Posty: 7
Rejestracja: śr gru 09, 2015 9:24 pm
Been thanked: 5 times

Re: HTTP_GET

Post autor: fidley »

Co do adresu kursu to zawsze jest jeszcze adres http://www.nbp.pl/kursy/xml/LastA.xml, tam zawsze masz ostatni ważny kurs... czyli po 12 będzie z dnia dzisiejszego, a przed z poprzedniego. Jak ci basis nie ustawi odpowiednio dostępu to zawsze możesz taki plik ściągnąć harmonogramem zadań na jakimś serwerze i wgrać go na AS i później obrobić tylko XML w abapie.
ABAPblog.com - w wolnych chwilach
Salon Kosmetyczny - pomagając żonce

wojtas7
Posty: 783
Rejestracja: pt mar 14, 2008 12:51 pm
Has thanked: 55 times
Been thanked: 155 times

Re: HTTP_GET

Post autor: wojtas7 »

Komuś też przestał działać HTTP_GET i zwraca błąd 503 w SAPie, a w przeglądarce jest OK? Mam wrażenie że nbp zaczął sprawdzać przeglądarkę klienta i tylko cha *chrome* czy *ie* działa?

ZETKA
Posty: 44
Rejestracja: czw lis 04, 2010 10:49 pm
Has thanked: 1 time
Been thanked: 40 times

Re: HTTP_GET

Post autor: ZETKA »

Od dość dawna NBP udostępnia REST API http://api.nbp.pl/ do kursów walut - dużo prostsze i wygodniejsze, zwłaszcza kiedy potrzebujemy nie tylko kurs bieżący.
Poniżej prosty raport (powinien działać bez zmian od wersji 7.40).

Kod: Zaznacz cały

DATA: currency TYPE tcurr-tcurr VALUE 'USD'.

cl_demo_input=>add_text( 'Exchange rate for:' ).
cl_demo_input=>request( EXPORTING text  = 'Currency'
                         CHANGING field = currency ).

DATA(url) = |http://api.nbp.pl/api/exchangerates/rates/A/{ currency }/|.
*url = |http://api.nbp.pl/api/exchangerates/rates/A/{ currency }/?format=xml|.

* Create HTTP Client by URL
cl_http_client=>create_by_url(
  EXPORTING
    url                = url
  IMPORTING
    client             = DATA(http_client)
  EXCEPTIONS
    OTHERS             = 1 ).

TRY.
* Create REST Client
    DATA(rest_client) = NEW cl_rest_http_client( http_client ).

* Get REST response
    rest_client->if_rest_client~get( ).
    DATA(response) = rest_client->if_rest_client~get_response_entity( ).
    DATA(out) = response->get_string_data( ).
    " 404 NotFound - Not Found - Brak danych

* Display JSON string
    cl_demo_output=>display_json( response->get_binary_data( ) ).

* Display JSON string as XML
    cl_demo_output=>display_xml( response->get_binary_data( ) ).

* Display parsed JSON
    DATA(tab) = NEW /ui5/cl_json_parser( ).
    tab->parse( out ).
    cl_demo_output=>write( tab->value( '/code' ) ).
    DO.
      IF tab->exists( |/rates/{ sy-index }| ).
        cl_demo_output=>write( tab->array_values( |/rates/{ sy-index }| ) ).
      ELSE.
        EXIT.
      ENDIF.
    ENDDO.
    cl_demo_output=>display( ).
* END Display...

    IF NOT rest_client IS INITIAL.
      rest_client->if_rest_client~close( ).
    ENDIF.
    http_client->close(
      EXCEPTIONS
        http_invalid_state = 1
        OTHERS             = 2 ).
  CATCH cx_root INTO DATA(error).
    MESSAGE error TYPE 'I'.
ENDTRY.
Pozdrawiam,
Krzysiek

mkowalczyk
Posty: 1
Rejestracja: wt cze 23, 2020 9:34 am

Re: HTTP_GET

Post autor: mkowalczyk »

Też mam problem z odpowiedzią 503 Service Unavailable przy próbie pobrania HTTP_GET.
Korzystam z adresu http://api.nbp.pl/api/exchangerates/tab ... format=xml

Zdefiniowałem sobie połączenie w SM59 i tam testowanie połączenia pokazuje wynik OK i zwraca wynik w xml.

Czy ktoś może spotkał się z takim problemem?

wojtas7
Posty: 783
Rejestracja: pt mar 14, 2008 12:51 pm
Has thanked: 55 times
Been thanked: 155 times

Re: HTTP_GET

Post autor: wojtas7 »

ja zastąpiłem http_get przez kod powyżej i śmiga elegancko. w wolnej chwili poczytam dlaczego tak się dzieje. reguła nadal ta sama - ściągam z nbp.pl pierwszą stronkę z tabelą a i szukam adresu do XML, znowu drugi raz zamiast http_get powyższe metody do downloadu i tak jak wcześniej analizuję xml do kursów.