Publication d’un fichier CSV - Exemples Perl et Java

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 1 minute de lecture
  • Un exemple d’utilisation de Perl pour publier un fichier CSV avec des informations d’identification d’authentification de base et de la classe Java Apache HttpClient pour publier un fichier CSV avec des informations d’identification d’authentification de base.

    Pour plus d'informations, consultez Publier des fichiers CSV ou Excel directement dans un jeu d’importation.

    Exemple 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
    }

    Exemple Java

    Remarque :
    Le client Apache peut limiter la quantité de données que vous pouvez importer en une seule transaction. Cet exemple est destiné à servir de point de départ et ne doit pas être utilisé en production.
    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();
    }