Struggling with this piece of getting to work

  • From: Vamshi Damidi <dbaprimatics@xxxxxxxxx>
  • To: oracle-l@xxxxxxxxxxxxx
  • Date: Thu, 4 Oct 2012 20:30:40 -0400

All experts,
I am trying to write aws webservice with plsql based on some links i got
them from blogs
Based on these url's i wrote this code.
http://jastraub.blogspot.com/2009/07/hmacsha256-in-plsql.html
http://jastraub.blogspot.com/2009/11/flexwsapi-no-on-samplecodeoraclecom.html
search code.google.com for plsql utils.
which has fantastic plsql utilities.
set serveroutput on
declare
  l_signature     varchar2(4000);
  l_response      clob;
  l_parm_name_tab wwv_flow_global.vc_arr2;
  l_parm_val_tab  wwv_flow_global.vc_arr2;
  i number;
  secure varchar2(1);
l_timestamp varchar2(50) :=  ( to_char(sysdate +
4/24,'YYYY-MM-DD')||'T'||to_char(sysdate+4/24,'hh24:mi:ss')||'-04:00');
-- Apex Specific
  l_security_group_id  NUMBER :=
apex_util.find_security_group_id('VDAMIDI');
  l_val                VARCHAR2(4000);
  v_arr                wwv_flow_global.vc_arr2;
-- Apex Specific Completed

begin
-- Apex Specific

  wwv_flow_api.set_security_group_id(l_security_group_id);
  apex_application.g_flow_id  := '1';
  apex_custom_auth.define_user_session('VDAMIDI', 1756183794381675);

-- Apex Specific Completed


  --compute the signature
  l_signature := amazon_signature('GET'||chr(10)||'ec2.amazonaws.com
'||chr(10)||'/'||chr(10)||'AWSAccessKeyId='||AWSACCESSKEY||'&Action=DescribeRegions&Timestamp='||apex_util.url_encode(l_timestamp)||'&Version=2012-08-15',AWSSECRETKEY);

  --create the tables of parameter names and values
  l_parm_name_tab :=
apex_util.string_to_table('AWSAccessKeyId:Action:Version:Timestamp:Signature',':');
  --need to use ~ instead of : for separator since timestamp will contain :
  l_parm_val_tab :=
apex_util.string_to_table(AWSACCESSKEY||'~DescribeRegions~2012-08-15~'||l_timestamp||'~'||wwv_flow_utilities.url_encode2(l_signature),'~');
  --need to add l_signature to the table separately, it may contain any
character
  --l_parm_val_tab(l_parm_val_tab.count + 1) := l_signature;

      for i in 1..l_parm_name_tab.count
   loop
      dbms_output.put_line (l_parm_name_tab(i) ||'|'||l_parm_val_tab(i));
   end loop;


  --make the REST request
  l_response := flex_ws_api.make_rest_request(
      p_url => 'http://ec2.amazonaws.com/',
      p_http_method => 'GET',
      p_parm_name => l_parm_name_tab,
      p_parm_value => l_parm_val_tab );

  --populate a collection with the response
  apex_collection.create_or_truncate_collection('P1_ITEMSEARCH_RESPONSE');
  apex_collection.add_member(
      p_collection_name   => 'P1_ITEMSEARCH_RESPONSE',
      p_clob001           => l_response );

  --populate a collection for any response http headers returned
  apex_collection.create_or_truncate_collection('P1_RESP_HEADERS');

  for i in 1.. flex_ws_api.g_headers.count loop
    apex_collection.add_member(
      p_collection_name => 'P1_RESP_HEADERS',
      p_c001 => flex_ws_api.g_headers(i).name,
      p_c002 => flex_ws_api.g_headers(i).value,
      p_c003 => flex_ws_api.g_status_code);
  end loop;

end;
/

i keep getting message signature not valid.

Any help would be greatly appreciated.

Thanks
Vamshi .D


--
//www.freelists.org/webpage/oracle-l


Other related posts: