PDA

View Full Version : Daten aus dem Internet auf die AS400



Seiten : [1] 2 3

alex61
10-07-18, 14:26
Hallo zusammen !
Habe wieder mal eine Frage. Vielleicht hat das (oder etwas ähnliches) ja schon jemand mal mit möglichst wenig Aufwand gelöst.
Ich möchte täglich die aktuellen Kupferwerte (z.B. in Dateiform) automatisiert aus dem Internet ziehen und dann in eine Tabelle unseres ERP-Systems auf der AS400 spielen.
Wer etwas Hilfestellung leisten kann, bitte melden.
Danke Euch
A61

Fuerchau
10-07-18, 14:52
Das geht am Besten per Java;-).
Aber ein paar Mitforenbenutzer habe dies auch schon anders gelöst.

AG1965_2
10-07-18, 14:59
Das geht am Besten per php ;-).
(aber auch evtl. mit SQL und auch RPG)

Hast Du denn schon eine Adresse, von der Du "die aktuellen Kupferwerte" (legal) beziehen kannst?

Robi
10-07-18, 15:00
Such dir einen Dienstleister, der die Daten als Webservice zur Verfügung stellt.
(meistens kostenpflichtig, und dann nicht nur ein Rohstoff)

oder verwende screenscrapper Programme auf PC Basis, die dir ne Textdatei oder ne csv erstellen.

Robi

Christian Bartels
10-07-18, 15:58
Helfen die HTTP-Funktionen aus dem Schema SYSTOOLS vielleicht weiter? Hier ist eine Dokumentation: https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/IBM%20i%20Technology%20Updates/page/New%20HTTP%20functions%20added%20to%20SYSTOOLS. Ein White Paper gibt es auch dazu: https://www-304.ibm.com/partnerworld/wps/servlet/ContentHandler/stg_ast_sys_wp_access_web_service_db2_i_udf.

Rainer Ross
12-07-18, 13:30
Hallo alex61,

ab 7.2 geht es mit SQL - hier ein Beispiel mit Fremdwährungen



Select x.*
from JSON_TABLE(
SYSTOOLS.HTTPGETCLOB(
'http://openexchangerates.org/api/latest.json?app_id=deineId',''),
'$'
Columns(
Basis char(3) path 'lax $.base',
EUR dec(15, 6) path 'lax $.rates.EUR',
GBP dec(15, 6) path 'lax $.rates.GBP'
)
) x;


Wenn Du es in ein RPG-Programm einbetten möchtest, dann findest Du hier ein Beispiel
https://gist.github.com/RainerRoss/0ad3c98598d71247352427664c4c4252

Viele Grüße
Rainer

AG1965_2
16-07-18, 14:54
In php könnte man zum Beispiel damit die HTML-Seite abrufen und die Werte herauskitzeln.
Nur mal so als Idee.

Aufruf: qsh ('/usr/local/ZendSvr6/bin/php /woauchimmer/suedkupfer.php')



<?php
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', true);
ini_set('date.timezone','Europe/Vienna');
ini_set('max_execution_time','300'); // 5 Minuten

$url = 'http://www.suedkupfer-marktdaten.de/market_d.php';
// $url = '/tmp/suedkupfer.de.html'; // aus Datei lesen
$html = file_get_contents($url);

$string_start = '<!-- inhalt hier -->';
$pos = strpos($html, $string_start) + strlen($string_start);
$text1 = substr($html, $pos);

$string_start = '<tbody>';
$pos_start = strpos($text1, $string_start) + strlen($string_start);
$string_ende = '</tbody>';
$pos_ende = strpos($text1, $string_ende);
$text1 = substr($text1, $pos_start, $pos_ende - $pos_start);

$text1 = strip_tags($text1, '<tr><td>');

$z = 0;

$zeilen = explode('<tr>', $text1);
foreach ($zeilen as $zeile) {
$z++;
$zeile = str_replace('</tr>', '', $zeile);
$zeile = str_replace('<td>&nbsp;</td>', '', $zeile);

$suchbegriff = '/ class=".*"/';
$ersatzbegriff = '';
$zeile = preg_replace($suchbegriff, $ersatzbegriff, $zeile);

$zellen = explode('<td>', $zeile);
$s = 0;
foreach ($zellen as $zelle) {
$s++;
$zelle = trim(strip_tags($zelle));
if ('' <> $zelle) {
echo 'Zeile:' . $z . ' Spalte:' . $s . ' Wert:' . $zelle . "\n";
}
}
}

?>


Erklärung zu den verwendeten php-Funktionen im Handbuch:
z.B. http://nl1.php.net/manual/de/function.strip-tags.php

alex61
17-07-18, 08:20
Hallo Rainer,
erst mal vielen Dank für die Hilfe - im übrigen auch allen anderen. Leider haben wir erst 7.1.
Gäbs da auch schon was ?

B.Hauser
17-07-18, 09:17
Die SQL http-Funktionen werden auch für 7.1 (via PTF) bereitgestellt.
Schau einfach mal in die Bibliothek SYSTOOLS rein (am Besten mit ACS oder Client Access, da findest Du die Funktionen am Einfachsten)

Birgitta

Rainer Ross
17-07-18, 10:32
Hallo Alex,

Birgitta hats schon gesagt. HTTPGETCLOB geht ab 7.1. Wenn die Daten im XML-Format kommen, dann geht es mit XMLTABLE auch mit 7.1. Wenn die Daten im JSON-Format kommen, dann geht das Parsen mit der Open-Source Bibliothek YAJL von Scott Klement. Wenn Du Beispiele benötigst, dann sprech mich einfach an.

Viele Grüße
Rainer