<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: REST PROGRAMMING EXAMPLE R_CAR in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/rest-programming-example-r-car/m-p/11231570#M1912255</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi All&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I finally figured out what was going wrong with my program.&amp;nbsp; I needed to make a "get" call first and set the CSRF_TOKEN value.&amp;nbsp; Then, when I made the POST call, I needed to feed in the CSRF_TOKEN value returned from the first get call. This is required so the SAP knows that it is working with the same session.&amp;nbsp; Otherwise a 403 invalid response is returned which I guess is correct. Using debug mode in Eclipse for ABAP allowed me to debug what was going on on the "server" side.&amp;nbsp; Any suggestions for improvement are welcome.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;REPORT ZTEST_REST.&amp;nbsp;&amp;nbsp; data: lo_http_client type ref to if_http_client,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mo_rest_client type ref to if_rest_client,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mv_csrf_token&amp;nbsp; type string.&amp;nbsp;&amp;nbsp; data: lo_rest_client type ref to if_rest_client,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lo_rest_entity type ref to if_rest_entity,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lv_return_code type i.&amp;nbsp;&amp;nbsp; data: lv_uri_path&amp;nbsp;&amp;nbsp;&amp;nbsp; type string,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lv_str&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type string,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lv_xstr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type xstring.&amp;nbsp;&amp;nbsp; lv_uri_path = '/sap/bc/rest_cars/Car/1/'.&amp;nbsp;&amp;nbsp; cl_http_client=&amp;gt;create_by_url(&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exporting&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = '&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://server.xxx.com:8000/sap/bc/rest_cars/Car/1"&gt;http://server.xxx.com:8000/sap/bc/rest_cars/Car/1&lt;/A&gt;&lt;SPAN&gt;'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; importing&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; client&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = lo_http_client&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exceptions&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; argument_not_found = 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; plugin_not_active&amp;nbsp; = 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; internal_error&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; others&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 4 ).&amp;nbsp;&amp;nbsp; if sy-subrc &amp;lt;&amp;gt; 0.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RETURN.&amp;nbsp;&amp;nbsp; endif.&amp;nbsp;&amp;nbsp; lo_http_client-&amp;gt;authenticate( username = 'xxxxx' password = 'xxxxx' ).&amp;nbsp;&amp;nbsp; lo_http_client-&amp;gt;propertytype_accept_cookie = if_http_client=&amp;gt;co_enabled.&amp;nbsp;&amp;nbsp; lo_http_client-&amp;gt;request-&amp;gt;set_header_field( name&amp;nbsp; = if_http_form_fields_sap=&amp;gt;sap_client value = 'X00' ).&amp;nbsp;&amp;nbsp; create object mo_rest_client type cl_rest_http_client&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exporting&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; io_http_client = lo_http_client. * Commented out from SAP online help example documentation *&amp;nbsp; mo_rest_client-&amp;gt;set_header_field( *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name&amp;nbsp; = if_rest_request=&amp;gt;gc_header_csrf_token *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value = 'fetch' ). * Above lines changed to&amp;nbsp;&amp;nbsp; mo_rest_client-&amp;gt;set_request_header(&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iv_name&amp;nbsp; = if_rest_request=&amp;gt;gc_header_csrf_token&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iv_value = 'fetch' ). ** Commented out from SAP online help example documentation *&amp;nbsp; mv_csrf_token = mo_rest_client-&amp;gt;get_header_field( name = if_rest_request=&amp;gt;gc_header_csrf_token ). * Above lines changed to:&amp;nbsp;&amp;nbsp; mv_csrf_token = mo_rest_client-&amp;gt;get_response_header( iv_name = if_rest_request=&amp;gt;gc_header_csrf_token ).&amp;nbsp;&amp;nbsp; mo_rest_client-&amp;gt;get( ).&amp;nbsp;&amp;nbsp; lv_return_code = mo_rest_client-&amp;gt;get_status( ).&amp;nbsp;&amp;nbsp; lo_rest_entity = mo_rest_client-&amp;gt;get_response_entity( ).&amp;nbsp;&amp;nbsp; mv_csrf_token = mo_rest_client-&amp;gt;get_response_header( iv_name = if_rest_request=&amp;gt;gc_header_csrf_token ).&amp;nbsp;&amp;nbsp; mo_rest_client-&amp;gt;set_request_header(&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iv_name&amp;nbsp; = IF_HTTP_HEADER_FIELDS_SAP=&amp;gt;REQUEST_URI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iv_value = '/sap/bc/rest_cars/Car/1' ).&amp;nbsp;&amp;nbsp; mo_rest_client-&amp;gt;set_request_header(&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iv_name&amp;nbsp; = 'X-CSRF-Token'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iv_value = mv_csrf_token ). * create REST entity + fill in data&amp;nbsp;&amp;nbsp; lo_rest_entity = mo_rest_client-&amp;gt;create_request_entity( ). * Needs to look like this from documentation *&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;* * * * Golf New* 1* 18599.98* EUR* 2012* * *&amp;nbsp;&amp;nbsp; lv_str = '&lt;/P&gt;&lt;P&gt;'.&amp;nbsp;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; ''.&amp;nbsp;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; ''.&amp;nbsp;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; ''.&amp;nbsp;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; 'Golf New'.&amp;nbsp;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; '1'.&amp;nbsp;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; '18599.98'.&amp;nbsp;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; 'EUR'.&amp;nbsp;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; '2012'.&amp;nbsp;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; ''.&amp;nbsp;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; ''.&amp;nbsp;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; ''.&amp;nbsp;&amp;nbsp; CALL FUNCTION 'SCMS_STRING_TO_XSTRING'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EXPORTING&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; text&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = lv_str&amp;nbsp;&amp;nbsp;&amp;nbsp; IMPORTING&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; buffer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = lv_xstr. * POST TEST&amp;nbsp;&amp;nbsp; lo_rest_entity-&amp;gt;set_binary_data( lv_xstr ). *&amp;nbsp; lo_rest_entity-&amp;gt;set_string_data( lv_str ).&amp;nbsp;&amp;nbsp; mo_rest_client-&amp;gt;post( lo_rest_entity ).&amp;nbsp;&amp;nbsp; lv_return_code = mo_rest_client-&amp;gt;get_status( ).&amp;nbsp;&amp;nbsp; lo_rest_entity = mo_rest_client-&amp;gt;get_response_entity( ).&amp;nbsp;&amp;nbsp; * on success, i.e. lv_return_code=201, read new data from REST entity&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 05 Oct 2016 18:30:10 GMT</pubDate>
    <dc:creator>Stephen3</dc:creator>
    <dc:date>2016-10-05T18:30:10Z</dc:date>
    <item>
      <title>REST PROGRAMMING EXAMPLE R_CAR</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/rest-programming-example-r-car/m-p/11231568#M1912253</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;I am trying to build this example in my SAP ECC 6.0 EHP7 NW 7.4 system but the table R_CAR doesn't exist in my system.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_nw74/helpdata/en/0f/5fb77942744afe94afafa78df57b70/content.htm?frameset=/en/0e/65f60d48f541e7ab34ed81fef41b5b/frameset.htm&amp;amp;current_toc=/en/33/12e0f98f494692b9777dd0ce9fba1e/plain.htm&amp;amp;node_id=520&amp;amp;show_children=false" title="http://help.sap.com/saphelp_nw74/helpdata/en/0f/5fb77942744afe94afafa78df57b70/content.htm?frameset=/en/0e/65f60d48f541e7ab34ed81fef41b5b/frameset.htm&amp;amp;current_toc=/en/33/12e0f98f494692b9777dd0ce9fba1e/plain.htm&amp;amp;node_id=520&amp;amp;show_children=false"&gt;http://help.sap.com/saphelp_nw74/helpdata/en/0f/5fb77942744afe94afafa78df57b70/content.htm?frameset=/en/0e/65f60d48f541e7ab34ed81fef41b5b/frameset.htm&amp;amp;current_toc=/en/33/12e0f98f494692b9777dd0ce9fba1e/plain.htm&amp;amp;node_id=520&amp;amp;show_children=false&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Question:&lt;/P&gt;&lt;P&gt;1. How do I get r_car in my system&lt;/P&gt;&lt;P&gt;2. How/where do I define s_car type&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Stephen&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 04 Sep 2015 02:35:21 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/rest-programming-example-r-car/m-p/11231568#M1912253</guid>
      <dc:creator>Stephen3</dc:creator>
      <dc:date>2015-09-04T02:35:21Z</dc:date>
    </item>
    <item>
      <title>Re: REST PROGRAMMING EXAMPLE R_CAR</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/rest-programming-example-r-car/m-p/11231569#M1912254</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Again;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;I am hoping someone can help me.&amp;nbsp; I have built the example listed in this link:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive-link-external-small" href="http://help.sap.com/saphelp_nw74/helpdata/en/8e/267cb0f4694dbf8fbaf7eb1cd7c91b/content.htm?frameset=/en/b2/86b4512ea4414fb36f17b0568a86ac/frameset.htm&amp;amp;current_toc=/en/33/12e0f98f494692b9777dd0ce9fba1e/plain.htm&amp;amp;node_id=534"&gt;http://help.sap.com/saphelp_nw74/helpdata/en/8e/267cb0f4694dbf8fbaf7eb1cd7c91b/content.htm?frameset=/en/b2/86b4512ea4414fb36f17b0568a86ac/frameset.htm&amp;amp;current_toc=/en/33/12e0f98f494692b9777dd0ce9fba1e/plain.htm&amp;amp;node_id=534&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am now trying to build the program "CREATING THE REST CLIENT".&amp;nbsp; First off I think there are some errors in the help documentation which is causing me problem.&amp;nbsp; Here is my program:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the small code example, I have changed the line mo_rest_client-&amp;gt;set_header_field to mo_rest_client-&amp;gt;set_request_header&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also, the main problem I am having is the line mo_rest_client-&amp;gt;post( lo_rest_entity ) is not calling my post routine in the class ZCL_REST_SAMPLE_CARS that I have created even though I have created with a superclass as CL_REST_RESOURCE and have defined it as my resource in IF_REST_APPLICATION~GET_ROOT_HANDLER as specified in the help documentation.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i.e. lo_handler-&amp;gt;attach( iv_template = '/Cars' iv_handler_class = 'ZCL_REST_SAMPLE_CARS' ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have also make the SICF entry correctly as the program runs but doesn't call the correct post routine.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT ZTEST_REST.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; data: lo_http_client type ref to if_http_client,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mo_rest_client type ref to if_rest_client,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mv_csrf_token type string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; data: lo_rest_client type ref to if_rest_client,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lo_rest_entity type ref to if_rest_entity,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lv_return_code type I.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; data: lv_uri_path&amp;nbsp;&amp;nbsp;&amp;nbsp; type string,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lv_str&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type string,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lv_xstr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type xstring.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; lv_uri_path = '/sap/bc/rest/cars/car/1'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; cl_http_client=&amp;gt;create_by_url(&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; exporting&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = '&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://myserver:8000/sap/bc/rest/cars/"&gt;http://myserver:8000/sap/bc/rest/cars/&lt;/A&gt;&lt;SPAN&gt;'&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; importing&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; client&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = lo_http_client&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; exceptions&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; argument_not_found = 1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; plugin_not_active&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; internal_error&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 3&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; others&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RETURN.&lt;/P&gt;&lt;P&gt;&amp;nbsp; endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; lo_http_client-&amp;gt;authenticate( username = '&amp;lt;username&amp;gt;' password = '&amp;lt;password&amp;gt;' ).&lt;/P&gt;&lt;P&gt;&amp;nbsp; lo_http_client-&amp;gt;propertytype_accept_cookie = if_http_client=&amp;gt;co_enabled.&lt;/P&gt;&lt;P&gt;&amp;nbsp; lo_http_client-&amp;gt;request-&amp;gt;set_header_field( name = if_http_form_fields_sap=&amp;gt;sap_client value = '700' ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; create object mo_rest_client type cl_rest_http_client&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exporting&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; io_http_client = lo_http_client.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; mo_rest_client-&amp;gt;set_request_header(&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iv_name = if_rest_request=&amp;gt;gc_header_csrf_token&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iv_value&amp;nbsp; = 'Fetch' ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;* NEXT LINE IS COMMENTED OUT AS IT DOESN'T IN MY SETUP.&amp;nbsp; SHOULD IT OR HAVE I DONE SOMETHING WRONG?&lt;/P&gt;&lt;P&gt;* Commented out from SAP online help example documentation&lt;/P&gt;&lt;P&gt;*&amp;nbsp; mv_csrf_token = mo_rest_client-&amp;gt;get_header_field( name = if_rest_request=&amp;gt;gc_header_csrf_token ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;* ABOVE LINE CHANGED TO:&lt;/P&gt;&lt;P&gt;&amp;nbsp; mv_csrf_token = mo_rest_client-&amp;gt;get_response_header( iv_name = if_reest_request=&amp;gt;gc_header_csrf_token ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;* Create REST Entity + fill in data&lt;/P&gt;&lt;P&gt;&amp;nbsp; lo_rest_entity = mo_rest_client-&amp;gt;create_request_entity( ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; lv_str = '&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;.&lt;/P&gt;&lt;P&gt;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; '&amp;lt;asx:abap xmlns:asx=&lt;A href="http://www.sap.com/abapxml"&gt;http://www.sap.com/abapxml&lt;/A&gt; version="1.0"&amp;gt;'.&lt;/P&gt;&lt;P&gt;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; '&amp;lt;asx:values&amp;gt;'.&lt;/P&gt;&lt;P&gt;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; '&amp;lt;CAR&amp;gt;'.&lt;/P&gt;&lt;P&gt;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; '&amp;lt;MODEL_NAME&amp;gt;Golf New&amp;lt;/MODEL_NAME&amp;gt;'.&lt;/P&gt;&lt;P&gt;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; '&amp;lt;MANU_ID&amp;gt;1&amp;lt;/MANU_ID&amp;gt;'.&lt;/P&gt;&lt;P&gt;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; '&amp;lt;PRICE&amp;gt;18599.98&amp;lt;/PRICE&amp;gt;'.&lt;/P&gt;&lt;P&gt;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; '&amp;lt;CURRENCY&amp;gt;EUR&amp;lt;/CURRENCY&amp;gt;'.&lt;/P&gt;&lt;P&gt;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; '&amp;lt;MODEL_YEAR&amp;gt;2012&amp;lt;/MODEL_YEAR&amp;gt;'.&lt;/P&gt;&lt;P&gt;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; '&amp;lt;/CAR&amp;gt;'.&lt;/P&gt;&lt;P&gt;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; '&amp;lt;/asx:values&amp;gt;'.&lt;/P&gt;&lt;P&gt;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; '&amp;lt;/asx:abap&amp;gt;'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; CALL FUNCTION 'SCMS_STRING_TO_XSTRING'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; EXPORTING&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; text&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = lv_str&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IMPORTING&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; buffer = lv_xstr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;* POST TEST&lt;/P&gt;&lt;P&gt;&amp;nbsp; lo_rest_entity-&amp;gt;set_binary_data( lv_xstr ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; mo_rest_client-&amp;gt;post( lo_rest_entity ).&lt;/P&gt;&lt;P&gt;&amp;nbsp; lv_return_code = mo_rest_client-&amp;gt;get_status( ).&lt;/P&gt;&lt;P&gt;&amp;nbsp; lv_rest_entity = mo_rest_client-&amp;gt;get_response_entity( ).&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 15 Sep 2016 20:26:43 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/rest-programming-example-r-car/m-p/11231569#M1912254</guid>
      <dc:creator>Stephen3</dc:creator>
      <dc:date>2016-09-15T20:26:43Z</dc:date>
    </item>
    <item>
      <title>Re: REST PROGRAMMING EXAMPLE R_CAR</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/rest-programming-example-r-car/m-p/11231570#M1912255</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi All&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I finally figured out what was going wrong with my program.&amp;nbsp; I needed to make a "get" call first and set the CSRF_TOKEN value.&amp;nbsp; Then, when I made the POST call, I needed to feed in the CSRF_TOKEN value returned from the first get call. This is required so the SAP knows that it is working with the same session.&amp;nbsp; Otherwise a 403 invalid response is returned which I guess is correct. Using debug mode in Eclipse for ABAP allowed me to debug what was going on on the "server" side.&amp;nbsp; Any suggestions for improvement are welcome.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;REPORT ZTEST_REST.&amp;nbsp;&amp;nbsp; data: lo_http_client type ref to if_http_client,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mo_rest_client type ref to if_rest_client,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mv_csrf_token&amp;nbsp; type string.&amp;nbsp;&amp;nbsp; data: lo_rest_client type ref to if_rest_client,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lo_rest_entity type ref to if_rest_entity,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lv_return_code type i.&amp;nbsp;&amp;nbsp; data: lv_uri_path&amp;nbsp;&amp;nbsp;&amp;nbsp; type string,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lv_str&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type string,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lv_xstr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type xstring.&amp;nbsp;&amp;nbsp; lv_uri_path = '/sap/bc/rest_cars/Car/1/'.&amp;nbsp;&amp;nbsp; cl_http_client=&amp;gt;create_by_url(&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exporting&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = '&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://server.xxx.com:8000/sap/bc/rest_cars/Car/1"&gt;http://server.xxx.com:8000/sap/bc/rest_cars/Car/1&lt;/A&gt;&lt;SPAN&gt;'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; importing&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; client&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = lo_http_client&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exceptions&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; argument_not_found = 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; plugin_not_active&amp;nbsp; = 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; internal_error&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; others&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 4 ).&amp;nbsp;&amp;nbsp; if sy-subrc &amp;lt;&amp;gt; 0.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RETURN.&amp;nbsp;&amp;nbsp; endif.&amp;nbsp;&amp;nbsp; lo_http_client-&amp;gt;authenticate( username = 'xxxxx' password = 'xxxxx' ).&amp;nbsp;&amp;nbsp; lo_http_client-&amp;gt;propertytype_accept_cookie = if_http_client=&amp;gt;co_enabled.&amp;nbsp;&amp;nbsp; lo_http_client-&amp;gt;request-&amp;gt;set_header_field( name&amp;nbsp; = if_http_form_fields_sap=&amp;gt;sap_client value = 'X00' ).&amp;nbsp;&amp;nbsp; create object mo_rest_client type cl_rest_http_client&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exporting&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; io_http_client = lo_http_client. * Commented out from SAP online help example documentation *&amp;nbsp; mo_rest_client-&amp;gt;set_header_field( *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name&amp;nbsp; = if_rest_request=&amp;gt;gc_header_csrf_token *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value = 'fetch' ). * Above lines changed to&amp;nbsp;&amp;nbsp; mo_rest_client-&amp;gt;set_request_header(&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iv_name&amp;nbsp; = if_rest_request=&amp;gt;gc_header_csrf_token&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iv_value = 'fetch' ). ** Commented out from SAP online help example documentation *&amp;nbsp; mv_csrf_token = mo_rest_client-&amp;gt;get_header_field( name = if_rest_request=&amp;gt;gc_header_csrf_token ). * Above lines changed to:&amp;nbsp;&amp;nbsp; mv_csrf_token = mo_rest_client-&amp;gt;get_response_header( iv_name = if_rest_request=&amp;gt;gc_header_csrf_token ).&amp;nbsp;&amp;nbsp; mo_rest_client-&amp;gt;get( ).&amp;nbsp;&amp;nbsp; lv_return_code = mo_rest_client-&amp;gt;get_status( ).&amp;nbsp;&amp;nbsp; lo_rest_entity = mo_rest_client-&amp;gt;get_response_entity( ).&amp;nbsp;&amp;nbsp; mv_csrf_token = mo_rest_client-&amp;gt;get_response_header( iv_name = if_rest_request=&amp;gt;gc_header_csrf_token ).&amp;nbsp;&amp;nbsp; mo_rest_client-&amp;gt;set_request_header(&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iv_name&amp;nbsp; = IF_HTTP_HEADER_FIELDS_SAP=&amp;gt;REQUEST_URI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iv_value = '/sap/bc/rest_cars/Car/1' ).&amp;nbsp;&amp;nbsp; mo_rest_client-&amp;gt;set_request_header(&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iv_name&amp;nbsp; = 'X-CSRF-Token'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iv_value = mv_csrf_token ). * create REST entity + fill in data&amp;nbsp;&amp;nbsp; lo_rest_entity = mo_rest_client-&amp;gt;create_request_entity( ). * Needs to look like this from documentation *&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;* * * * Golf New* 1* 18599.98* EUR* 2012* * *&amp;nbsp;&amp;nbsp; lv_str = '&lt;/P&gt;&lt;P&gt;'.&amp;nbsp;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; ''.&amp;nbsp;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; ''.&amp;nbsp;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; ''.&amp;nbsp;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; 'Golf New'.&amp;nbsp;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; '1'.&amp;nbsp;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; '18599.98'.&amp;nbsp;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; 'EUR'.&amp;nbsp;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; '2012'.&amp;nbsp;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; ''.&amp;nbsp;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; ''.&amp;nbsp;&amp;nbsp; lv_str = lv_str &amp;amp;&amp;amp; ''.&amp;nbsp;&amp;nbsp; CALL FUNCTION 'SCMS_STRING_TO_XSTRING'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EXPORTING&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; text&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = lv_str&amp;nbsp;&amp;nbsp;&amp;nbsp; IMPORTING&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; buffer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = lv_xstr. * POST TEST&amp;nbsp;&amp;nbsp; lo_rest_entity-&amp;gt;set_binary_data( lv_xstr ). *&amp;nbsp; lo_rest_entity-&amp;gt;set_string_data( lv_str ).&amp;nbsp;&amp;nbsp; mo_rest_client-&amp;gt;post( lo_rest_entity ).&amp;nbsp;&amp;nbsp; lv_return_code = mo_rest_client-&amp;gt;get_status( ).&amp;nbsp;&amp;nbsp; lo_rest_entity = mo_rest_client-&amp;gt;get_response_entity( ).&amp;nbsp;&amp;nbsp; * on success, i.e. lv_return_code=201, read new data from REST entity&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Oct 2016 18:30:10 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/rest-programming-example-r-car/m-p/11231570#M1912255</guid>
      <dc:creator>Stephen3</dc:creator>
      <dc:date>2016-10-05T18:30:10Z</dc:date>
    </item>
  </channel>
</rss>

