[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Sep 2004
    Beiträge
    11

    Datei aus dem Web laden und im IFS speichern

    Hallo zusammen,

    gibt es eine Möglichkeit, mit Bordmitteln, eine Datei aus dem Internet ins IFS zu laden ?
    Normal würde ic hdas mit CURL oder WGET machen, aber beides ist auf der Maschine nicht verfügbar.

    mfg
    jogi

  2. #2
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    WGET kannst du dir installieren. Hab ich auch auf unserem System mal gemacht.
    Anleitung dafür findest du im Internet.

    Ansonsten könntest du dir auch die SQL Funktionen in der SYSTOOLS anschauen (z.B. HTTPGETCLOBVERBOSE).
    Mit denen sollte es möglich sein den Response als BLOB in eine Temporäre Tabelle zu schreiben und diese kannst du dann ins IFS exportieren.

    Für den HTTP Aufruf selbst gibt es sowohl im Internet als auch im Forum Beispiele.
    So wie dieses hier von Rainer Ross http://newsolutions.de/forum-systemi...7034#post97034

    lg Andreas

  3. #3
    Registriert seit
    Aug 2014
    Beiträge
    179
    Hallo,
    @Andreas, danke für den Hinweis auf den Link

    Für alle, die sich für das Thema interessieren, hier der Source für den Zugriff auf den Webservice von Google Maps, incl. dem Speichern des Ergebnisses ins IFS. Das geht ab 7.1. Das Parsen von XML-Daten geht mit XML-Into. Das Parsen von JSON-Daten geht mit JSON_TABLE. Auch hier gibt es bereits Post's zum Thema.

    HTTPGETCLOB ist für Character-Daten vorgesehen. Für Bilder, PDF's oder MP3 nimmt man HTTPGETBLOB. Analog verwendet man für POST-Requests HTTPPOSTCLOB und HTTPPOSTBLOB.

    @Birgitta Hauser, vielen Dank für Deine hervorragende Unterstützung im Bereich SQL

    PHP-Code:
             ctl-opt main(maindftactgrp(*nooption(*nounref);                    
          
    //------------------------------------------------------------------//    
          //                                                                  //    
          // GETHTTPCLOB from Google Maps API                                 //    
          //                                                                  //    
          //-----------------                                                 //    
          // R.Ross 01.2017 *                                                 //    
          //------------------------------------------------------------------//    
          // Variables                                                        //    
          //------------------------------------------------------------------//    
                                                                                    
             
    dcl-s   myfile      sqltype(CLOB_FILE);      // CLOB-File              
                                                                                    
             
    dcl-s   myurl       varchar(256);            // URL                    
             
    dcl-s   myheader    varchar(256);            // HTTP-Header            
             
    dcl-s   query       varchar(256);            // QueryString          
                                                                                    
          //------------------------------------------------------------------//    
          // Procedure - Main                                                 //    
          //------------------------------------------------------------------//    
             
    dcl-proc main;                                                         
                                                                                    
               
    exec sql set option datfmt=*isotimfmt=*isocommit=*none,          
                                   
    closqlcsr=*endactgrp;                            
                                                                                    
               
    myurl 'https://maps.googleapis.com/maps/api/geocode/xml?' +        
                       
    'address=';                                                  
               
    query '3605 US-52, Rochester, MN';                                 
                                                                                    
          
    // URL-Encoding                                                           
                                                                                    
               
    exec sql set :query systools.urlencode(:query,'UTF-8');            
               
    myurl += query;                            // URL + QueryString      
                                                                                    
               
    myfile_name '/tmp/test.xml';             // StreamFile             
               
    myfile_nl   = %len(%trim(myfile_name));    // NameLength             
               
    myfile_fo   SQFOVR;                      // FileOverwrite          
                                                                                    
               
    exec sql values systools.httpgetclob (:myurl, :myheader)             
                          
    into :myfile;                                             
                                                                                    
             
    end-proc;                                                              
          
    //------------------------------------------------------------------// 
    Herzliche Grüße

    Rainer

  4. #4
    Registriert seit
    Sep 2004
    Beiträge
    11
    Hallo,

    Danke für eure Antworten.
    Leider läuft auf der AS400 noch 6.1 :-)
    Lässt sich das dort auch zum Laufen bringen ?

    LG
    Jogi

  5. #5
    Registriert seit
    Aug 2014
    Beiträge
    179
    Dir kann geholfen werden. Für Systeme ab V4.2 gibt es die HTTPAPI von Scott Klement unter folgendem Link https://www.scottklement.com/httpapi/httpapi_zip.html

    Anbei ein Beispiel-CL mit Aufruf des Google-Maps Webservice

    PHP-Code:
    /*********************************************************************/
    /*                                                                   */
    /* GET GOOGLE-MAPS XML-DATA                                          */
    /*                                                                   */
    /******************                                                  */
    /* R.ROSS 01.2017 *                                                  */
    /*********************************************************************/

       
    PGM

       DCL        
    VAR(&URL)  TYPE(*CHARLEN(256)
       
    DCL        VAR(&STMFTYPE(*CHARLEN(256)

       
    MONMSG     MSGID(CPF0000)
    /*********************************************************************/
    /* GET XML-DATA                                                      */
    /*********************************************************************/

       
    CHGVAR     VAR(&URL) +
                    
    VALUE('http://maps.googleapis.com/maps/api/+
                    geocode/xml?address=schmalholzstr. +
                    27,kaufering&components=country:DE'
    )

       
    CHGVAR     VAR(&STMFVALUE('/tmp/googmaps.xml')

       
    HTTPAPI    URL(&URLDOWNLOAD(&STMFDEBUG(*NONE)

       
    CHGATR     OBJ(&STMFATR(*CCSIDVALUE(1208)

    /*********************************************************************/
    /* ENDE                                                              */
    /*********************************************************************/
       
    ENDE:        ENDPGM
    /*********************************************************************/ 
    Herzliche Grüße

    Rainer

Similar Threads

  1. SAVF auf PC laden
    By rr2001 in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 02-03-20, 14:30
  2. Laden von Daten in den Hauptspeicher
    By gogocdb in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 15-07-15, 08:45
  3. Bildschirmanzeige als Text speichern
    By petzi-mg in forum NEWSboard Programmierung
    Antworten: 13
    Letzter Beitrag: 06-11-14, 07:51
  4. cobol programm auf as400 speichern
    By activ in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 24-05-02, 07:32
  5. Laden von Daten beschleunigen?
    By Marc in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 17-11-01, 11:04

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •