[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Oct 2017
    Beiträge
    14

    systools.urlencode & httpgetclob

    Hallo Zusammen.
    Für einen Webservice soll eine Adresse eingelesen und verarbeitet werden.
    Leider funktioniert das Ganze nicht wie gewünscht.

    dcl-s
    dcl-s tmpAddress1 VARCHAR(150);
    dcl-s tmpAddress2 VARCHAR(150);

    tmpAddress1 ='Schmalholzstraße 27, 86916 Kaufering';
    EXEC SQL values systools.urlencode(:tmpAddress1,'UTF-8') INTO :tmpAddress2;

    Damit soll dann die Google- API aufgerufen werden:

    EXEC SQL DECLARE CUR01 SCROLL CURSOR FOR
    select *
    from XMLTABLE ('$d/GeocodeResponse/result/geometry/location'
    passing xmlparse(document(
    systools.httpgetclob(
    'https://maps.googleapis.com/maps/api/geocode/xml?key=' concat
    'GOOGLEKEY&address=' concat
    :tmpAddress2 concat
    '&components=countryE','' ))) as "d"
    COLUMNS
    lat decimal(15, 7) PATH 'lat',
    lng decimal(15, 7) PATH 'lng'
    ) ;


    EXEC SQL OPEN CUR01;
    EXEC SQL FETCH FIRST FROM CUR01 INTO :tmpLat, :tmpLng ;
    EXEC SQL CLOSE CUR01;

    DSPLY (%char(tmpLat));


    Was mache ich falsch ?

    Gruß

  2. #2
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Wo genau liegt denn das Problem?
    Gibt es eine Fehlermeldung und wenn ja welche?
    Hast du die HTTP-URL im Browser eingegeben und probiert ob diese überhaupt Funktioniert?
    Oder liegt das Problem bei der Verarbeitung des Response XML.
    Wenn ja, wie sieht das XML aus?

    lg Andreas

  3. #3
    Registriert seit
    Aug 2014
    Beiträge
    179
    Hi Joachim,

    hier die funktionierende Lösung. Den Webservice habe ich im JSON Format angesprochen. Den Key bekommst Du von der Google Developer Console

    Code:
             ctl-opt dftactgrp(*no) main(main);
          //------------------------------------------------------------------//
          //                                                                  //
          // Get Google Data                                                  //
          //                                                                  //
          //-----------------                                                 //
          // R.Ross 11.2018 *                                                 //
          //------------------------------------------------------------------//
          // SQL-Options                                                      //
          //------------------------------------------------------------------//
    
             exec sql set option datfmt=*iso, timfmt=*iso, commit=*none,
                                 decmpt=*period, closqlcsr=*endactgrp;
    
          //------------------------------------------------------------------//
          // Main                                                             //
          //------------------------------------------------------------------//
             dcl-proc main;
    
             dcl-s   LocLat      packed(11:8);
             dcl-s   LocLon      packed(11:8);
             dcl-s   LocURL      varchar(256);
             dcl-s   LocAddress  varchar(256);
    
               exec sql
                set :LocAddress =
                 systools.urlencode('Bgm.-Hollweck-Straße 6, 85599 Parsdorf',
                'UTF-8');
    
               LocURL =
                'https://maps.googleapis.com/maps/api/geocode/json?address=' +
                 LocAddress +
                '&key=AaaaaaaaaaaaaaaaK_PYp2iSKKNVJow7Q3-MsmSvo' +
                '&components=country:DE';
    
               exec sql
                Select Latitude, Longitude into :LocLat, :LocLon
                 from JSON_TABLE(
                       SYSTOOLS.HTTPGETCLOB(:LocUrl,''), '$'
                 Columns(
                   Latitude  dec(11, 8) path '$.results.geometry.location.lat',
                   Longitude dec(11, 8) path '$.results.geometry.location.lng'
                 )
                );
    
             end-proc;
          //------------------------------------------------------------------//
    Viele Grüße
    Rainer

Similar Threads

  1. REST Webservices / Verwendung von SYSTOOLS
    By dschroeder in forum NEWSboard Programmierung
    Antworten: 25
    Letzter Beitrag: 14-02-18, 12:11
  2. SYSTOOLS / HTTPGETBLOB Verhalten
    By Bratmaxxe in forum NEWSboard Programmierung
    Antworten: 15
    Letzter Beitrag: 21-12-17, 09:29
  3. urlencode und UTF-8
    By dschroeder in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 05-10-17, 13:00
  4. SYSTOOLS.URLENCODE
    By KM in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 25-04-17, 10:44
  5. SYSTOOLS.JSON2BSON
    By rischer in forum IBM i Hauptforum
    Antworten: 28
    Letzter Beitrag: 02-10-15, 12:36

Berechtigungen

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