標記件、広域予備率Web公表システム
https://web-kohyo.occto.or.jp/kks-web-public/
の右下「CSVダウンロード」を押してファイル(zip)をダウンロードしたいのです。
このサイトをどんどんシュリンクしていって、下記htmlをローカルに作成してボタンクリックしてもダウンロードできるところまで確認できました。
---------
<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<title>広域予備率Web公表システム</title></head>
<body>
<form action="https://web-kohyo.occto.or.jp/kks-web-public/home/download" target="_blank">
<input type="hidden" id="hidRange" name="range" value="today">
<input type="hidden" id="hidFromDate" name="fromDate" value="2023/07/11">
<button>CSVダウンロード</button>
</form>
</body></html>
---------
※Delphi 11.1です
■Button、IdSSLIOHandlerSocketOpenSSL、IdHTTP を置いて
■uses は 下記あたりを付加、
IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP,
IdURI, IdGlobal, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL,
REST.HttpClient, IdGlobalProtocols, Web.HTTPApp;
■libeay32.dll、ssleay32.dll をEXEファイルと同じ場所に置き、
//-----------------------
procedure TForm1.Button1Click(Sender: TObject);
var
SoapMsg: string;
ResponseData: TStringStream;
st: string;
poststring: TStringList;
res: string;
begin
poststring := TStringList.Create;
ResponseData := TStringStream.Create('', TEncoding.UTF8);
try
poststring.Add('range=today');
poststring.Add('fromDate=2023/07/11');
IdHTTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvTLSv1_2;
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.SSLVersions := [sslvTLSv1_2];
IdHTTP1.HTTPOptions := IdHTTP1.HTTPOptions + [hoNoProtocolErrorException, hoWantProtocolErrorContent];
IdHTTP1.Request.ContentType := 'appllication/x-www-form-urlencoded';
IdHTTP1.Request.CharSet := 'utf-8';
IdHTTP1.Request.CacheControl := 'no-cache';
IdHTTP1.Request.Accept := 'text/html, */*';
IdHTTP1.Post('https://web-kohyo.occto.or.jp/kks-web-public/home/download', poststring, ResponseData);
Memo1.Lines.Clear;
Memo1.Lines.Add(IdHTTP1.ResponseText);
// Memo1.Lines.Add('-------------------------');
// Memo1.Lines.Add(HTTPDecode(ResponseData.DataString));
finally
ResponseData.Free;
end;
end;
***************
としましたが IdHTTP1.ResponseText は HTTP/1.1 403 となります。詳しい方ご指南いただけたら幸いです。長文申し訳ありません。
すみません。nameじゃなく idですね・・・
と喜び勇んで下記に修正しましたが、やっぱり HTTP/1.1 403 です。。。。
Poststring.Add('hidRange=today');
Poststring.Add('hidFromDate=2023/07/11');
すみませんx2 idじゃなくnameです。。。。。
編集 削除ダウンロードするだけなら https に対応せさつつ
var
FileStream: TFileStream;
begin
FileStream := TFileStream.Create('AAAA.ZIP',fmCreate);
IdHTTP1.Get('https://web-kohyo.occto.or.jp/kks-web-public/home/download?range=today&fromDate=2023%2F07%2F11',FileStream);
FileStream.Free;
でよくない?
AAAAAさん、ありがとうございます。
oh・・・ え・・Getでもいいの?知りませんでした。
でもやりたいことはできます!本当にありがとうございました。
よく見たら(よく見なくても)method属性がありませんね。
Getでもいい じゃなく Get じゃなきゃNG でした