#!/usr/bin/perl use strict; use warnings; my %req_json = ( date => '2021-03-24', time => ['00:00','06:00','12:00','18:00'], leadtime_hour => '0', area => [70, -18, 69, -17], # North, West, South, East type => 'analysis', variable => 'total_aerosol_optical_depth_670nm', format => 'netcdf_zip', ); require JSON; JSON->import('-support_by_pp'); my $req_json_string = JSON->new->latin1->escape_slash()->encode(\%req_json); require HTTP::Request; my $request = HTTP::Request->new(POST => 'https://ads.atmosphere.copernicus.eu/api/v2'); $request->header('content-type' => 'application/json'); $request->header('accept' => 'application/json'); $request->content('cams-global-atmospheric-composition-forecasts',$req_json_string,'download.netcdf_zip'); $request->authorization_basic('meine uid','mein api key'); require IO::Socket::SSL; IO::Socket::SSL->import(qw(SSL_VERIFY_NONE)); require LWP::UserAgent; my $ua = LWP::UserAgent->new( cookie_jar => {}, agent => 'Perl', timeout => 10, ssl_opts => { SSL_verify_mode => SSL_VERIFY_NONE(), verify_hostname => 0, } ) or do { die; }; my $response = $ua->request($request); if ($response->is_success) { my $content = $response->decoded_content; say $content; } else { die $response->status_line; }