広域予備率Web公表システム からCSVダウンロードしたい

解決


ウォレス  2023-07-11 09:46:22  No: 151012  IP: 192.*.*.*

標記件、広域予備率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  となります。詳しい方ご指南いただけたら幸いです。長文申し訳ありません。



編集 削除
ウォレス  2023-07-11 10:13:48  No: 151013  IP: 192.*.*.*

すみません。nameじゃなく idですね・・・
と喜び勇んで下記に修正しましたが、やっぱり  HTTP/1.1 403  です。。。。
    Poststring.Add('hidRange=today');
    Poststring.Add('hidFromDate=2023/07/11');

編集 削除
ウォレス  2023-07-11 10:22:58  No: 151014  IP: 192.*.*.*

すみませんx2 idじゃなくnameです。。。。。

編集 削除
AAAAA  2023-07-11 10:24:16  No: 151015  IP: 192.*.*.*

ダウンロードするだけなら 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;

でよくない?

編集 削除
ウォレス  2023-07-11 10:30:45  No: 151016  IP: 192.*.*.*

AAAAAさん、ありがとうございます。

oh・・・ え・・Getでもいいの?知りませんでした。
でもやりたいことはできます!本当にありがとうございました。

編集 削除
ウォレス  2023-07-11 10:42:26  No: 151017  IP: 192.*.*.*

よく見たら(よく見なくても)method属性がありませんね。
Getでもいい じゃなく Get じゃなきゃNG でした
 

編集 削除