HTTP Request

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
7 Beiträge • Seite 1 von 1
7 Beiträge Seite 1 von 1

HTTP Request

Beitrag von vagans (ForumUser / 6 / 0 / 0 ) »
Tag zusammen,

ich habe vor 14 Tagen schon einmal ein ähnliches Topic aufgemacht, leider bin ich bei der Sache nicht wirklich weiter, bzw. hat sich alles etwas geändert :cry: .

Ich habe anfangs versucht, mit RPCXML zu arbeiten, bis ich gemerkt habe, dass das schon im Ansatz falsch war.

Ich soll anhand dieser API: http://www.live.sipgate.de/api/rest
aus dem SAP per HTTP(S) Request SMS versenden. Leider habe ich soetwas bisher noch nie (erfolgreich) gemacht und bastel da jetzt schon Tage rum. Momentan sieht's so aus:

- Ich erstelle ein Client Object (call method cl_http_client=>create_by_url)
- call method client->request->set_method ... _get
- dann kommt der send (call method client->send)
- und der receive (call method client->receive)
- dann noch ein close

Das lässt sich alles aktivieren und wenn ich es ausführe bekomme ich:

communication_error ( receive )
code: 110 message:
... :shock:

Kann mir da jemand weiterhelfen? Bin ich überhaupt auf dem richtigen Weg?

Schonmal Danke und schönen Tag :D

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: HTTP Request

Beitrag von ratsnus (Specialist / 357 / 2 / 56 ) »
<:: XING-Gruppe Tricktresor::>

Re: HTTP Request

Beitrag von vagans (ForumUser / 6 / 0 / 0 ) »
Bringt mir leider nichts, trotzdem Danke :up:

Kann mir vielleicht jemand den Ablauf eines Http Requests erklären? :x

Wie gesagt, bisher bin ich soweit:

- Erstellen eines HTTP Client Objekts
(call method cl_http_client=>create_by_url - denke, dass das klappt, da sy-subrc = 0.
Die Methode bekommt von mir die URL übergeben)
- Versuch sich zu Authentifizieren
(call method client->authenticate - denke, dass hier wohl der fehler ist, weil ich mich ja
nicht einloggen kann!

call method client->authenticate
EXPORTING
proxy_authentication = 'X'
username = 'username-here'
password = 'password-here'.
if sy-subrc <> 0.
write: / 'Somewhere Something went terribly wrong! subrc:', sy-subrc.
exit.
endif.

Das macht er aber soweit, sy-subrc = 0)
- Jetzt kommt der Send
(call method client->send - funktioniert soweit auch, sy-subrc = 0)
- Nun zum Receive
(call method client->receive - hier fliege ich raus, bekomme hier 110 als subrc)


Einfach keine Ahnung mehr für heute... :o

Re: HTTP Request

Beitrag von vagans (ForumUser / 6 / 0 / 0 ) »
Tag zusammen,

kleines Statusupdate: not working so far!

Code: Alles auswählen.

* data declaration
data: sms_url type string.
data: v_version type string value '2.37.0'.
data: v_targets type string value 'xxxx'.
data: v_content type string value 'xxxx'.
data: lv_user type string value 'xxxx'.
data: lv_password type string value 'xxxx'.
data: client type ref to if_http_client.
data: w_result type string.

* concatenata request url
clear sms_url.
concatenate
  'https://api.sipgate.net/my/events/sms/?version=' v_version '&targets=tel:' v_targets '&content=' v_content
  into sms_url.

* create http client object
CALL METHOD cl_http_client=>create_by_url
  EXPORTING
    url                = sms_url
  IMPORTING
    client             = client
  EXCEPTIONS
    argument_not_found = 1
    plugin_not_active  = 2
    internal_error     = 3
    OTHERS             = 4.
if sy-subrc <> 0.
  write: / 'Create failed, subrc = ', sy-subrc.
  exit.
endif.



CALL METHOD client->request->set_method(
  if_http_request=>co_request_method_post ).

client->request->set_header_field( name  = '~request_method'
                                        value = 'POST' ).

cl_http_utility=>set_request_uri( request = client->request
                                   uri    = sms_url ).

*for https connnections
client->propertytype_accept_cookie = 1.

CALL METHOD client->authenticate
  EXPORTING
    proxy_authentication = 'X'
    username             = lv_user
    password             = lv_password.
if sy-subrc <> 0.
  write: / 'Login failed, subrc = ', sy-subrc.
  exit.
endif.

client->send( ).
client->receive( ).
Beim Ausführen haut's mich raus wegen einer "RAISE_EXCEPTION".

Code: Alles auswählen.

if connection-encode <> 0.
raise http_communitcation_failure.
endif.
Vorschläge? Ideen?

Schönen Abend!

Re: HTTP Request

Beitrag von Tron (Top Expert / 1327 / 35 / 332 ) »
Moin,
habe mal ein wget geschrieben, zum Analysieren von Ergebnissen eines HTTP-Aufrufs.
(Herunterladen und anzeigen einer HTML Seite)
Denn der erfolgreiche Aufruf einer Seite bedeutet nicht automatisch, dass es nicht doch eine Fehlermeldung ist, die zurück kommt.

Code: Alles auswählen.

*&---------------------------------------------------------------------*
*& Report  YBC_HTTP_CLIENT_TEST
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ybc_http_client_test.

* data declarations
DATA: client TYPE REF TO if_http_client.


DATA:
host TYPE string VALUE 'http://www.abapforum.com',
service TYPE string VALUE '80',
errortext TYPE string.


DATA:
uri TYPE string,
subrc TYPE i,
version TYPE i,
request TYPE REF TO if_http_request.
DATA res_data TYPE xstring.

DATA:buffer TYPE xstring,
     conv TYPE REF TO cl_abap_conv_in_ce,
     buf TYPE TABLE OF tab512 WITH HEADER LINE,
     bytes_read TYPE i,
     fname TYPE string VALUE 'c:\temp\000.html'.


CALL METHOD cl_http_client=>create
  EXPORTING
    host               = host
  IMPORTING
    client             = client
  EXCEPTIONS
    argument_not_found = 1
    plugin_not_active  = 2
    internal_error     = 3
    OTHERS             = 4.

IF sy-subrc <> 0.
  break bcuser.
ENDIF.


uri = 'http://www.abapforum.com/forum/viewtopic.php?f=2&t=17466&p=59315#p59315'.
cl_http_utility=>set_request_uri( request = client->request uri = uri ).


CALL METHOD client->send
*exporting timeout = timeout
  EXCEPTIONS http_communication_failure = 1
    http_invalid_state = 2
    http_processing_failed = 3
    OTHERS = 4.

IF sy-subrc <> 0.
  CALL METHOD client->get_last_error
    IMPORTING
      code    = subrc
      message = errortext.

  EXIT.
ENDIF.


CALL METHOD client->receive
  EXCEPTIONS
    http_communication_failure = 1
    http_invalid_state         = 2
    http_processing_failed     = 3
    OTHERS                     = 4.

break bcuser.

CALL METHOD client->response->get_data
  RECEIVING
    data = res_data.


CALL METHOD client->close
  EXCEPTIONS
    http_invalid_state = 1
    OTHERS             = 2.

IF sy-subrc <> 0.
  CALL METHOD client->get_last_error
    IMPORTING
      code    = subrc
      message = errortext.

  EXIT.
ENDIF.


conv = cl_abap_conv_in_ce=>create(
         encoding = 'DEFAULT'
         endian = 'L'
         input = res_data
       ).

DO.
  CLEAR buf-wa.

  CALL METHOD conv->read
    EXPORTING
      n    = 512
    IMPORTING
      data = buf-wa
      len  = bytes_read.

  APPEND buf.

  IF bytes_read NE 512. EXIT. ENDIF.
ENDDO.

CALL METHOD cl_gui_frontend_services=>gui_download
  EXPORTING
    filename                = fname
    filetype                = 'BIN'
  CHANGING
    data_tab                = buf[]
  EXCEPTIONS
    file_write_error        = 1
    no_batch                = 2
    gui_refuse_filetransfer = 3
    invalid_type            = 4
    no_authority            = 5
    unknown_error           = 6
    header_not_allowed      = 7
    separator_not_allowed   = 8
    filesize_not_allowed    = 9
    header_too_long         = 10
    dp_error_create         = 11
    dp_error_send           = 12
    dp_error_write          = 13
    unknown_dp_error        = 14
    access_denied           = 15
    dp_out_of_memory        = 16
    disk_full               = 17
    dp_timeout              = 18
    file_not_found          = 19
    dataprovider_exception  = 20
    control_flush_error     = 21
    not_supported_by_gui    = 22
    error_no_gui            = 23
    OTHERS                  = 24.

IF sy-subrc <> 0.
ENDIF.


CALL METHOD cl_gui_frontend_services=>execute
  EXPORTING
    document               = fname
  EXCEPTIONS
    cntl_error             = 1
    error_no_gui           = 2
    bad_parameter          = 3
    file_not_found         = 4
    path_not_found         = 5
    file_extension_unknown = 6
    error_execute_failed   = 7
    synchronous_failed     = 8
    not_supported_by_gui   = 9
    OTHERS                 = 10.

IF sy-subrc <> 0.
ENDIF.
gruß Jens
<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: HTTP Request

Beitrag von vagans (ForumUser / 6 / 0 / 0 ) »
Hallo zusammen!

Ich beschäftige mich noch immer mit meinem ... kleinen Problemchen und bin dabei auf folgende Frage gestossen:

Kann ich einen Webservice per HTTPS (!) übrehaupt aufrufen, wenn ich auf meinem SAP System gar kein HTTPS, sondern nur HTTP Protokolle besitze?
Ich habe mich in den vergangenen Tagen damit beschäftigt, HTTPS auf unserem SAP einzurichten, bis ich zu einer Stelle kam, die anscheinend Kosten mit sich bringen würde. Irgendwas sollte von SAP erworben werden. Also habe ich da erstmal aufgehört und versucht anders weiter zu machen, leider noch immer erfolglos!

Also, nochmal die Frage:

Kann ich ohne aktiviertes HTTPS (auf meinem System) auf HTTPS des Webservices zugreiffen?

Hoffe mir kann das jemand beantworten!

Schöne Grüße!

Re: HTTP Request

Beitrag von vagans (ForumUser / 6 / 0 / 0 ) »
Inzwischen habe ich mein Problem in den Griff bekommen!

Zwar anders, als anfangs erwartet, aber es funktioniert!

Ich sende jetzt meine SMS aus dem SAP System per Batch Aufruf, benutze dabei CURL.

Der SMS Versand funktioniert soweit, bis auf Probleme mit den Umlauten. Die werden weder in Klartext, noch codiert gesendet. Stattdessen bekomme ich einen Fehler und die passende Fehlerseite im Terminal angezeigt.

Auf Anfrage bestätigte mir der Webservice, dass sie momentan ein Problem mit den Umlauten hätten. Also denke ich, dass ich da momentan sowieso nicht weiter komme!

Gelöst habe ich es derweil mit der eher unschönen Version, Umlaute einfach als ae, oe oder ue zu schreiben - besser als gar nichts!

Danke für Eure Hilfe!

Seite 1 von 1

Vergleichbare Themen

4
Antw.
2227
Views
HTTP Request
von carlie » 23.08.2019 20:28 • Verfasst in ABAP® für Anfänger
0
Antw.
1968
Views
ABAP HTTP-Request
von tohe » 05.02.2015 10:38 • Verfasst in ABAP® für Anfänger
0
Antw.
2751
Views
ArchiveLink Fehler bei HTTP Request
von Sascha4SAP » 12.06.2008 17:36 • Verfasst in Basis
3
Antw.
4719
Views
BSP-Seiten als Service - Problem bei HTTP-Request
von Xilukarim » 23.08.2019 13:04 • Verfasst in Web-Dynpro, BSP + BHTML
4
Antw.
8856
Views
SAP als HTTP-Server
von Z_Sven » 14.03.2012 12:02 • Verfasst in Web Application Server

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Hilfe zum FB MATERIAL_MAINTAIN_DARK
vor 22 Stunden von black_adept gelöst 8 / 1726
HR-Entgeltnachweis
Gestern von ChrisB 4 / 2289

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Hilfe zum FB MATERIAL_MAINTAIN_DARK
vor 22 Stunden von black_adept gelöst 8 / 1726
HR-Entgeltnachweis
Gestern von ChrisB 4 / 2289

Unbeantwortete Forenbeiträge

Export von Spools in XLSX
vor 4 Tagen von abapamateur 1 / 260
Feldberechnung ME32K
vor einer Woche von ZF_SAPler 1 / 844
MS-Word als Editor
letzen Monat von tekko 1 / 4362