Publicação de um arquivo CSV - Exemplos de Perl e Java
Um exemplo usando Perl para publicar um arquivo CSV com credenciais básicas de autenticação e a classe Java Apache HttpClient para publicar um arquivo CSV com credenciais básicas de autenticação.
Para obter mais informações, consulte Publicar arquivos CSV ou Excel diretamente em um conjunto para importação.
Exemplo de Perl
# file: uploadafile.pl
# call me like this:
# uploadafile.pl --url="https://instance.service-now.com/sys_import.do?sysparm_import_set_tablename=dloo_test&sysparm_transform_after_load=true"
# --uploadfile=/Users/davidloo/Desktop/test_files/test_users.csv
#
# the "sysparm_transform_after_load=true" parameter instructs the import set to transform immediately after loading
#
use strict;
use LWP::UserAgent;
use HTTP::Request::Common;
use Getopt::Long;
use File::Basename;
my ( $o_url, $o_fqn );
GetOptions(
"url=s" => \$o_url,
"uploadfile=s" => \$o_fqn,
);
# mandatory arguments: url
&usage unless ( $o_url && $o_fqn );
my $url = $o_url;
my $fname = $o_fqn;
# put timeouts, proxy etc into the useragent if needed
my $ua = LWP::UserAgent->new();
# setup basic authentication credentials
$ua->credentials(
'demo.service-now.com:443',
'Service-now',
'admin' => 'admin'
);
my $req = POST $url, Content_Type => 'form-data',
Content => [
submit => 1,
upfile => [ $fname ]
];
my $response = $ua->request($req);
if ($response->is_success()) {
print "OK: ", $response->content;
} else {
print $response->as_string;
}
exit;
sub usage {
printf "usage: %s --url=%s --uploadfile=%s\\n",
basename($0),'https://....','c:/data/test.csv';
exit
}
Exemplo de Java
Nota:
O Apache HttpClient pode limitar a quantidade de dados que você pode importar em uma única transação. Este exemplo deve ser usado como ponto de partida e não deve ser usado na produção.
HttpClient httpclient = new HttpClient();
PostMethod post = new PostMethod("https://instance-name.service-now.com/sys_import.do?sysparm_import_set_tablename=u_test_upload&sysparm_transform_after_load=true");
try {
Credentials defaultcreds = new UsernamePasswordCredentials("admin", "admin");
httpclient.getState().setCredentials(AuthScope.ANY, defaultcreds); // Prepare HTTP post
httpclient.getParams().setAuthenticationPreemptive(true);
File targetFile = new File("/Users/davidloo/Desktop/test_files/nodeinfo2736820198834983863.csv");
Part[] parts = { new FilePart(targetFile.getName(), targetFile) };
post.setRequestEntity(new MultipartRequestEntity(parts, post.getParams()));
int result = httpclient.executeMethod(post);
// Display status code
System.out.println("Response status code: " + result);
// Display response
System.out.println("Response body: "+post.getResponseBodyAsString());
} catch(Exception e) {
System.err.println(e.getMessage());
} finally {
// Release current connection to the connection pool
// once you are done
post.releaseConnection();
}