Code: Alles auswählen.
DATA:
l_client TYPE REF TO if_http_client,
l_request TYPE REF TO if_http_request,
l_url TYPE string VALUE 'https://www.derserverwartet/'.
** Creation of new IF_HTTP_Client object
CALL METHOD cl_http_client=>create_by_url
EXPORTING
url = l_url
IMPORTING
client = l_client
EXCEPTIONS
argument_not_found = 1
plugin_not_active = 2
internal_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
CASE sy-subrc.
WHEN 1.
MESSAGE e000(sr) WITH
'Creation of client failed: Argument not found' . "#EC NOTEXT
WHEN 2.
MESSAGE e000(sr) WITH
'Creation of client failed: plugin not active' . "#EC NOTEXT
WHEN OTHERS.
MESSAGE e000(sr) WITH 'Creation of client failed'. "#EC NOTEXT
ENDCASE.
ENDIF.
l_request = l_client->request.
CALL METHOD cl_http_utility=>set_request_uri
EXPORTING
request = l_request
uri = 'generate'.
CALL METHOD l_client->request->set_method(
if_http_request=>co_request_method_post ).
Code: Alles auswählen.
*&---------------------------------------------------------------------*
*& Report YBC_WINSOCK (rel.EC6)
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
*http://abapcodexperiments.wordpress.com/2011/04/06/abap-http-request/
REPORT ybc_transformation_wsock2.
DATA http_rc TYPE i.
DATA: subrc TYPE i,
errortext TYPE string.
DEFINE m_check_err.
if sy-subrc <> 0.
call method l_client->get_last_error
importing
code = subrc
message = errortext.
message s000(sr) with errortext.
exit.
endif.
END-OF-DEFINITION.
DATA:
l_client TYPE REF TO if_http_client,
l_request TYPE REF TO if_http_request,
l_url TYPE string VALUE 'http://10.98.5.49:8983'.
DATA: response TYPE string.
* Creation of new IF_HTTP_Client object
CALL METHOD cl_http_client=>create_by_url
EXPORTING
url = l_url
IMPORTING
client = l_client
EXCEPTIONS
argument_not_found = 1
plugin_not_active = 2
internal_error = 3
OTHERS = 4.
m_check_err.
l_client->request->set_version(
if_http_request=>co_protocol_version_1_1 ).
CALL METHOD l_client->request->set_method(
if_http_request=>co_request_method_post ).
* zu sendende Daten
CALL METHOD l_client->request->set_form_field
EXPORTING
name = 'DATA'
value = 'binary or utf8'.
* sending/receiving
l_client->response->get_status( IMPORTING code = http_rc ).
CALL METHOD l_client->send
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3
OTHERS = 4.
l_client->response->get_status( IMPORTING code = http_rc ).
m_check_err.
CALL METHOD l_client->receive
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3.
m_check_err.
* Capture the result data
response = l_client->response->get_cdata( ).
BREAK-POINT.
* VERY IMPORTANT: close your connection
l_client->close( ).
EXIT.
Code: Alles auswählen.
*&---------------------------------------------------------------------*
*& Report YBC_HTTP_TEST *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
REPORT ybc_http_test .
CONSTANTS crlf(2) VALUE %_cr_lf.
DATA: subrc TYPE i,
errortext TYPE string.
DEFINE m_check_err.
if sy-subrc <> 0.
call method l_client->get_last_error
importing
code = subrc
message = errortext.
message s000(sr) with errortext.
exit.
endif.
END-OF-DEFINITION.
DATA:
l_entity TYPE REF TO if_http_entity,
l_client TYPE REF TO if_http_client ,
http_url TYPE string.
*p_content TYPE string.
* Build the url string based on input
http_url = 'http://192.168.216.54:8081'.
* Creation of new IF_HTTP_Client object
CALL METHOD cl_http_client=>create_by_url
EXPORTING
url = http_url
IMPORTING
client = l_client
EXCEPTIONS
argument_not_found = 1
plugin_not_active = 2
internal_error = 3
OTHERS = 4.
* Wir arbeiten für die Post
l_client->request->set_header_field( name = '~request_method' value = 'POST' ).
* Setzte Header Parameter für MULTIPART - Übertragung
CALL METHOD l_client->request->set_header_field
EXPORTING
name = 'Content-type'
value = 'multipart/mixed'.
*=================================================
* Erzeuge ersten MULTIPART Abschnitt
CALL METHOD l_client->request->add_multipart
RECEIVING
entity = l_entity.
* Art des Inhalts im aktuellen Abschnitt
CALL METHOD l_entity->set_header_field
EXPORTING
name = 'Content-type'
value = 'application/x-www-form-urlencoded'.
* Der Inhalt
DATA l_test TYPE string.
l_test =
'AppVersion=1.0&AcceptUPSLicenseAgreement=Yes&ResponseType=application/x-ups-pld&VersionNumber=V4R1&UserId=xxx&Password=xxx'.
CONCATENATE l_test crlf INTO l_test.
* Hänge den Inhalt in den aktuellen Abschnitt
CALL METHOD l_entity->set_cdata
EXPORTING
data = l_test.
*=================================================
* Erzeuge zweiten MULTIPART Abschnitt
CALL METHOD l_client->request->add_multipart
RECEIVING
entity = l_entity.
* Art des Inhalts im aktuellen Abschnitt
CALL METHOD l_entity->set_header_field
EXPORTING
name = 'Content-type'
value = 'application/x-ups-binary'.
* Der Inhalt
l_test =
'020082 2.0 2002101700000000000010500 000000001*AA0A1754 US 1234567002000001*BA1z1234560100002352 00001+0000000000000010 +0000000000000000LBS01PRE10 '.
CONCATENATE l_test crlf INTO l_test.
* Hänge den Inhalt in den aktuellen Abschnitt
CALL METHOD l_entity->set_cdata
EXPORTING
data = l_test.
*=================================================
* sending/receiving und FEUER FREI
CALL METHOD l_client->send
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3
OTHERS = 4.
m_check_err.
CALL METHOD l_client->receive
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3.
m_check_err.
DATA http_rc TYPE i.
***http status code
l_client->response->get_status( IMPORTING code = http_rc ).
break sapuser.
Jetzt das Ganze nochmal mit logischer Destination (SM59)POST / HTTP/1.0
content-type: multipart/mixed; boundary=ejjeeffe0
content-length: 491
user-agent: SAP Web Application Server (1.0;620)
host: 192.168.216.54:8081
accept-encoding: gzip
--ejjeeffe0
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: 122
AppVersion=1.0&AcceptUPSLicenseAgreement=Yes&ResponseType=application/x-ups-pld&VersionNumber=V4R1&UserId=xxx&Password=xxx
--ejjeeffe0
Content-Type: application/x-ups-binary; charset=utf-8
Content-Length: 147
020082 2.0 2002101700000000000010500 000000001*AA0A1754 US 1234567002000001*BA1z1234560100002352 00001+0000000000000010 +0000000000000000LBS01PRE10
--ejjeeffe0--
HTTP/1.0 200 OK
Code: Alles auswählen.
*&---------------------------------------------------------------------*
*& Report YBC_HTTP_TEST_DEST *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
REPORT ybc_http_test_dest .
CONSTANTS crlf(2) VALUE %_cr_lf.
DATA: subrc TYPE i,
errortext TYPE string.
DEFINE m_check_err.
if sy-subrc <> 0.
call method l_client->get_last_error
importing
code = subrc
message = errortext.
message s000(sr) with errortext.
exit.
endif.
END-OF-DEFINITION.
DATA:
l_entity TYPE REF TO if_http_entity,
l_client TYPE REF TO if_http_client .
* HTTP Destination mit SM59 / Typ G
* Zielmaschine = 192.168.216.54 / ServiceNr. = 8081
CALL METHOD cl_http_client=>create_by_destination
EXPORTING
destination = 'HTTP_TEST'
IMPORTING
client = l_client
EXCEPTIONS
argument_not_found = 1
destination_not_found = 2
destination_no_authority = 3
plugin_not_active = 4
internal_error = 5
OTHERS = 6.
* Wir arbeiten für die Post
l_client->request->set_header_field( name = '~request_method' value = 'POST' ).
* Setzte Header Parameter für MULTIPART - Übertragung
CALL METHOD l_client->request->set_header_field
EXPORTING
name = 'Content-type'
value = 'multipart/mixed'.
*=================================================
* Erzeuge ersten MULTIPART Abschnitt
CALL METHOD l_client->request->add_multipart
RECEIVING
entity = l_entity.
* Art des Inhalts im aktuellen Abschnitt
CALL METHOD l_entity->set_header_field
EXPORTING
name = 'Content-type'
value = 'application/x-www-form-urlencoded'.
* Der Inhalt
DATA l_test TYPE string.
l_test =
'AppVersion=1.0&AcceptUPSLicenseAgreement=Yes&ResponseType=application/x-ups-pld&VersionNumber=V4R1&UserId=xxx&Password=xxx'.
CONCATENATE l_test crlf INTO l_test.
* Hänge den Inhalt in den aktuellen Abschnitt
CALL METHOD l_entity->set_cdata
EXPORTING
data = l_test.
*=================================================
* Erzeuge zweiten MULTIPART Abschnitt
CALL METHOD l_client->request->add_multipart
RECEIVING
entity = l_entity.
* Art des Inhalts im aktuellen Abschnitt
CALL METHOD l_entity->set_header_field
EXPORTING
name = 'Content-type'
value = 'application/x-ups-binary'.
* Der Inhalt
l_test =
'020082 2.0 2002101700000000000010500 000000001*AA0A1754 US 1234567002000001*BA1z1234560100002352 00001+0000000000000010 +0000000000000000LBS01PRE10 '.
CONCATENATE l_test crlf INTO l_test.
* Hänge den Inhalt in den aktuellen Abschnitt
CALL METHOD l_entity->set_cdata
EXPORTING
data = l_test.
*=================================================
* sending/receiving und FEUER FREI
CALL METHOD l_client->send
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3
OTHERS = 4.
m_check_err.
CALL METHOD l_client->receive
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3.
m_check_err.
DATA http_rc TYPE i.
***http status code
l_client->response->get_status( IMPORTING code = http_rc ).
break sapuser.
viel ErfolgPOST / HTTP/1.0
content-type: multipart/mixed; boundary=ejjeeffe0
content-length: 491
user-agent: SAP Web Application Server (1.0;620)
host: 192.168.216.54:8081
accept-encoding: gzip
authorization: Basic VHJvbjpBQkM=
sap-language: D
--ejjeeffe0
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: 122
AppVersion=1.0&AcceptUPSLicenseAgreement=Yes&ResponseType=application/x-ups-pld&VersionNumber=V4R1&UserId=xxx&Password=xxx
--ejjeeffe0
Content-Type: application/x-ups-binary; charset=utf-8
Content-Length: 147
020082 2.0 2002101700000000000010500 000000001*AA0A1754 US 1234567002000001*BA1z1234560100002352 00001+0000000000000010 +0000000000000000LBS01PRE10
--ejjeeffe0--
HTTP/1.0 200 OK
Ich habe einen lokalen Webserver (XAMPP in einer VM) und zeichne den Netzwerktraffic mit einer Software namens WIRESHARK(portable) auf.Adrian hat geschrieben:Wie kann ich meinen POST ansehen um zu schauen wie er aufgebaut ist ?
Code: Alles auswählen.
{
"accept-encoding": "gzip",
"connection": "close",
"content-length": "99291",
"content-type": "multipart/mixed; boundary=ejjeeffe0",
"host": "postcatcher.in",
"user-agent": "SAP Web Application Server (1.0;700)",
"x-forwarded-for": "194.25.83.107",
"x-real-ip": "194.25.83.107",
"x-request-start": "1374148003186"
}
Code: Alles auswählen.
TYPES: BEGIN OF datei,
line(3) TYPE n,
data TYPE string,
END OF datei.
DATA: dataset TYPE string,
datei TYPE TABLE OF datei WITH HEADER LINE,
body_leange TYPE i.
PERFORM entry.
*&---------------------------------------------------------------------*
*& Form entry
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM entry.
PERFORM datei_einlesen.
PERFORM senden.
ENDFORM. "entry
*&---------------------------------------------------------------------*
*& Form DATEI_EINLESEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM datei_einlesen.
dataset = '\\stherp01.sth.local\SAP_DATENTRANSFER\UPS Tagesabschluss Dateien\Data.txt'.
OPEN DATASET dataset FOR INPUT IN TEXT MODE ENCODING DEFAULT.
READ DATASET dataset INTO datei-data.
CLOSE DATASET dataset.
datei-line = 2.
INSERT datei INDEX 1.
CLEAR datei.
datei-data = 'AppVersion=1.0&AcceptUPSLicenseAgreement=Yes&ResponseType=application/x-ups-pld&VersionNumber=V4R1&UserId=PLDDSTEST&Password=PLDDSTEST'.
datei-line = 1.
INSERT datei INDEX 1.
CLEAR datei.
SORT datei BY line.
ENDFORM. "DATEI_EINLESEN
*&---------------------------------------------------------------------*
*& Form SENDEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM senden.
CONSTANTS crlf(2) VALUE %_cr_lf.
DATA: subrc TYPE i,
errortext TYPE string.
DEFINE m_check_err.
if sy-subrc <> 0.
call method l_client->get_last_error
importing
code = subrc
message = errortext.
message s000(sr) with errortext.
exit.
endif.
END-OF-DEFINITION.
DATA:
l_entity TYPE REF TO if_http_entity,
l_client TYPE REF TO if_http_client ,
http_url TYPE string.
*p_content TYPE string.
* Build the url string based on input
* http_url = 'https://www.pld-certify.ups.com/hapld/tos/kdwhapltos'.
http_url = 'http://postcatcher.in/catchers/51e7d59057f59402000008f3'.
* Creation of new IF_HTTP_Client object
CALL METHOD cl_http_client=>create_by_url
EXPORTING
url = http_url
IMPORTING
client = l_client
EXCEPTIONS
argument_not_found = 1
plugin_not_active = 2
internal_error = 3
OTHERS = 4.
* Wir arbeiten für die Post
l_client->request->set_header_field( name = '~request_method' value = 'POST' ).
l_client->request->set_version( if_http_request=>co_protocol_version_1_1 ).
* Setzte Header Parameter für MULTIPART - Übertragung
CALL METHOD l_client->request->set_header_field
EXPORTING
name = 'Content-type'
value = 'multipart/mixed'.
*=================================================
* Erzeuge ersten MULTIPART Abschnitt
CALL METHOD l_client->request->add_multipart
RECEIVING
entity = l_entity.
* Art des Inhalts im aktuellen Abschnitt
CALL METHOD l_entity->set_header_field
EXPORTING
name = 'Content-type'
value = 'application/x-www-form-urlencoded'.
* Der Inhalt
DATA l_test TYPE string.
READ TABLE datei WITH KEY line = '1'.
IF sy-subrc = 0.
l_test = datei-data.
ENDIF.
CONCATENATE l_test crlf INTO l_test.
* Hänge den Inhalt in den aktuellen Abschnitt
CALL METHOD l_entity->set_cdata
EXPORTING
data = l_test.
*=================================================
* Erzeuge zweiten MULTIPART Abschnitt
CALL METHOD l_client->request->add_multipart
RECEIVING
entity = l_entity.
* Art des Inhalts im aktuellen Abschnitt
CALL METHOD l_entity->set_header_field
EXPORTING
name = 'Content-type'
value = 'application/x-ups-binary'.
* Der Inhalt
READ TABLE datei WITH KEY line = '2'.
IF sy-subrc = 0.
l_test = datei-data.
ENDIF.
CONCATENATE l_test crlf INTO l_test.
* Hänge den Inhalt in den aktuellen Abschnitt
CALL METHOD l_entity->set_cdata
EXPORTING
data = l_test.
*=================================================
* sending/receiving und FEUER FREI
CALL METHOD l_client->send
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3
OTHERS = 4.
m_check_err.
CALL METHOD l_client->receive
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3.
m_check_err.
DATA: response TYPE string.
response = l_client->response->get_cdata( ).
DATA http_rc TYPE i.
***http status code
l_client->response->get_status( IMPORTING code = http_rc ).
break sapuser.
dataset = '\\stherp01.sth.local\SAP_DATENTRANSFER\UPS Tagesabschluss Dateien\UEBERTRAGUNG.html'.
OPEN DATASET dataset FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
TRANSFER response TO dataset.
CLOSE DATASET dataset.