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


HSPTV!掲示板


未解決 解決 停止 削除要請

2025
0906
ABBOTTSWeb APIでファイルをダウンロードしたい5解決


ABBOTTS

リンク

2025/9/6(Sat) 12:54:23|NO.103947

下記のようなREST形式のWeb APIを提供しているサイトがあります。
https://www.sample.com/api/list?AB=1
ABで条件を指定すると、その条件に該当する情報がCSVファイルでダウンロードできる仕組みです。

このAPIをブラウザのURL欄に入れて開くとファイルをダウンロードできることは確認しているのですが、
ABの値を変えながら連続してファイルをダウンロードするためにこれをHSPで自動化したいです。

調べたところ hspinet.as の netrequest_get が使えそうかと思い、下記のように作りました。


#include "hspinet.as" netinit if stat : dialog "ネット接続できません。" : end neturl "https://www.sample.com/api/" netrequest_get "list?AB=1" mes "DOWNLOAD 開始" *main ; 結果待ちのためのループ netexec res if res > 0 : goto *comp if res < 0 : goto *bad await 50 goto *main *bad ; エラー neterror estr mes "ERROR "+estr stop *comp ; 完了 mes "DOWNLOAD 完了" netgetv buf mesbox buf,640,400,1 stop

ですが、これを実行してもページアクセスエラー(該当するページがない)が返ってきます。
HSPのマニュアルでは netrequest_get の引数は「リクエストを行なうファイル名」となっているのに対して、
APIには.phsや.cgiなどのファイル名が入っていないのでこれが原因のような気もしますが、
Web APIに詳しくなくよくわかりません。
処理が間違っているところがあれば教えていただきたいです。



この記事に返信する


SYAM

リンク

2025/9/8(Mon) 21:45:06|NO.103963

> ブラウザのURL欄に入れて開くとファイルをダウンロードできることは確認している

試しに
https://www.sample.com/api/list?AB=1
をブラウザで開きましたが、404(該当するページがない)でした。
実際に目的のCSVがダウンロードされたという具体的なURLは提示できますか?または、今やっても404になってしまうでしょうか?


スクリプトには問題なさそうに見えます。試しに、

neturl "https://www.google.com/" netrequest_get "search?q=HSP"
のように変更したところ、正しくダウンロードされるのが確認できます。



ABBOTTS

リンク

2025/9/10(Wed) 00:35:19|NO.103968

SYAMさん

回答ありがとうございます。
説明が足りず申し訳ありません。
sample.com はダミーのURLとして書かせてもらいました。
実際のURLは下記です。
https://www.tele.soumu.go.jp/giteki/list?SC=1&DC=1&OF=1&NUM=010HUXX00001234&NAM=TEST

なお、このURLは下記のページのWeb-API仕様書のサンプルを参考にしています。
https://www.tele.soumu.go.jp/j/sys/equ/tech/webapi/

改めて書き直しますと、こんな感じです。


#include "hspinet.as" #include "hsp3utf.as" netinit if stat : dialog "ネット接続できません。" : end neturl "https://www.tele.soumu.go.jp/giteki/" netrequest_get "list?SC=1&DC=1&OF=1&NUM=010HUXX00001234&NAM=TEST" mes "DOWNLOAD 開始" *main ; 結果待ちのためのループ netexec res if res > 0 : goto *comp if res < 0 : goto *bad await 50 goto *main *bad ; エラー neterror estr mes "ERROR "+estr stop *comp ; 完了 mes "DOWNLOAD 完了" netgetv buf mesbox buf,640,400,1 stop



用賀じゅんちゃんおじさん

リンク

2025/9/10(Wed) 01:29:27|NO.103969

すこし古いですが ほかのひとにも参考になりそうな HSP3 + Web API 参考記事があったので共有します

【 HSPでチャットワークAPIを利用してみよう〜その2 】

https://tks-kan.com/2016/08/12/92/



TOMATO

リンク

2025/9/10(Wed) 09:02:24|NO.103970

手元でも再現しました。
WiresharkでパケットキャプチャをしてみたところCDNのCloudFrontが応答していました。
もしかして変なUserAgent(HSPInet(HSP3.x; Windows)をアクセス拒否してるのでは…と思い、
UserAgentをGoogle Chromeに偽装してみたところ上手くアクセスすることができました。


#include "hspinet.as" #include "hsp3utf.as" netinit if stat : dialog "ネット接続できません。" : end netagent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36" neturl "https://www.tele.soumu.go.jp/giteki/" netrequest_get "list?SC=1&DC=1&OF=1&NUM=010HUXX00001234&NAM=TEST" mes "DOWNLOAD 開始" *main ; 結果待ちのためのループ netexec res if res > 0 : goto *comp if res < 0 : goto *bad await 50 goto *main *bad ; エラー neterror estr mes "ERROR "+estr stop *comp ; 完了 mes "DOWNLOAD 完了" netgetv buf mesbox buf,640,400,1 stop



ABBOTTS

リンク

2025/9/10(Wed) 22:31:13|NO.103972

TOMATOさん

なるほど、そういうことだったのですね。
教えていただいた通り、netagent の行を追加したらダウンロードできるようになりました!
大変助かりました、ありがとうございました。

SYAMさんも用賀じゅんちゃんおじさんもアドバイスいただきありがとうございました。
また何かありましたらよろしくお願いします!



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.103947への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

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