HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
1011
REMAMAZON AWSの接続について4解決


REM

リンク

2015/10/11(Sun) 18:15:01|NO.72202

現在HSPを使い、AMAZONのAWSへリクエストするため
いろいろ調べてしてみたのですが、
うまくいきません。
実際に、amazonへリクエストする流れは

https://affiliate.amazon.co.jp/gp/associates/help/t126/a13?ie=UTF8&pf_rd_i=assoc_help_t126_a12&pf_rd_m=AN1VRQENFRJN5&pf_rd_p=&pf_rd_r=&pf_rd_s=center-2&pf_rd_t=501&ref_=amb_link_84046596_2

↑を参考にしました。
なにがおかしいのかわかりません。
SHAの計算などは
http://hsp.tv/play/pforum.php?mode=pastwch&num=61564
を参考にしました。

誰かお力を貸していただけないでしょうか?


#include "hspinet.as" #include "rsa.hsp" #uselib "kernel32.dll" #func global GetSystemTime "GetSystemTime" var #func global SystemTimeToFileTime "SystemTimeToFileTime" var, var #func global FileTimeToLocalFileTime "FileTimeToLocalFileTime" var, var #func global FileTimeToSystemTime "FileTimeToSystemTime" var, var #module #deffunc utctojst var after, var before, local i SystemTimeToFileTime before, i FileTimeToLocalFileTime i, i FileTimeToSystemTime i, after return #global ;タイムスタンプ dim st, 4 GetSystemTime st // 現在のシステム時刻を取得 ;utctojst st, st // ローカル時刻に変換 ;実際にAPIを取得するためのタイムタンプ取得 a="" + wpeek(st.0, 0) + "-";○○〇〇年 a1="0"+wpeek(st.0, 2);〇〇月 a1=strmid(a1,-1,2) a+=a1+"-" a1="0"+wpeek(st.1, 2);〇〇日 a1=strmid(a1,-1,2) a+=a1+"T" a1= "0"+wpeek(st.2, 0);○○時 a1=strmid(a1,-1,2) a+=a1+":" a1= "0"+wpeek(st.2, 2);○○分 a1=strmid(a1,-1,2) a+=a1+":" a1= "0"+wpeek(st.3, 0);○○秒 a1=strmid(a1,-1,2) a+=a1+"Z" key="0123456789" lf="":wpoke lf,0,0x0a ;Cの\n相当の文字。HSPの\nと他言語の\nは違うので text="GET"+lf text+="ecs.amazonaws.jp"+lf text+="/onca/xml"+lf itemid="B00GD419MK" AwsID="0000000000000000" AssociateID22 = "0000000000000" type="Large" timestamp=a nkfcnv utf8, timestamp urlencode timestamp, utf8 text1="AWSAccessKeyId="+AwsID+"&AssociateTag="+AssociateID22+"&IdType=ASIN&ItemId="+itemid+"&Operation=ItemLookup&ResponseGroup=Request%2C"+type+"&Service=AWSECommerceService&Timestamp="+timestamp+"&Version=2011-08-02" text+="AWSAccessKeyId="+AwsID+"&AssociateTag="+AssociateID22+"&IdType=ASIN&ItemId="+itemid+"&Operation=ItemLookup&ResponseGroup=Request%2C"+type+"&Service=AWSECommerceService&Timestamp="+timestamp+"&Version=2011-08-02" dim ipad,16 memset ipad,0x36,64 dim opad,16 memset opad,0x5c,64 l=strlen(key) memset key,0,64-l,l InitSha256 context repeat 64 c=peek(key,cnt)^peek(opad,cnt) InputSha256 context,c,1 loop InitSha256 context2 repeat 64 c=peek(key,cnt)^peek(ipad,cnt) InputSha256 context2,c,1 loop InputSha256 context2,text,strlen(text) OutputSha256 context2,hash,0 InputSha256 context,hash,32 OutputSha256 context,hash,0 EncodeBase64 result,hash,32 mes result #define DL_NAME "res.xml" /**********/ /* 前処理 */ /**********/ netinit if stat { dialog "ネットワーク接続ができない状態です。スクリプトを終了します。",1,"エラー" end } /**********************************************************/ /* hspinet.dllでAWSにアクセス、レスポンスをファイルに保存 */ /**********************************************************/ neturl "http://ecs.amazonaws.jp/onca/" netdlname DL_NAME mes "データを取得中です..." nkfcnv utf8, result urlencode result, utf8 text1="AWSAccessKeyId="+AwsID+"&AssociateTag="+AssociateID22+"&IdType=ASIN&ItemId="+itemid+"&Operation=ItemLookup&ResponseGroup=Request%2C"+type+"&Service=AWSECommerceService&Timestamp="+timestamp+"&Version=2011-08-02" file="http://ecs.amazonaws.jp/onca/xml/?"+text1+"&Signature="+result+"" strrep file,"\n","" objsize 500,400 mesbox file netload file dialog ""+file+"" exec DL_NAME,16 // ダウンロードしたファイルを拡張子"xml"に関連付けられたアプリで表示 stop



この記事に返信する


mjhd

リンク

2015/10/11(Sun) 18:47:35|NO.72206

うまくいきません,とは具体的にどのようにうまくいかないのでしょうか?(エラーメッセージなど)
それと,参考URLが開けないのですが…



mjhd

リンク

2015/10/11(Sun) 19:08:54|NO.72209


file="xml?"+text1+"&Signature="+result+""
と修正することでとりあえず接続は成功するようです.

どのようにうまくいっていないのかわからないので,的外れかもしれませんが…



REM

リンク

2015/10/12(Mon) 06:46:14|NO.72221

ご連絡ありがとうございます。
amazonのAWSの接続を行い、指定したリクエストを取得してくる
プログラムなのですが、
情報を取得の際にはタイムスタンプと署名が必要で、
それを追加した後にリクエストを投げることでxmlを取得することが可能なのですが
エラーばかり404notfound
とでて取得できません。



REM

リンク

2015/10/12(Mon) 06:56:06|NO.72222

mjhdさま

確認したところ、mihdさまが言われた通りにしたところうまくいきました。
ありがとうございました。



ONION software Copyright 1997-2021(c) All rights reserved.