php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > XML
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


XML Hier passt alles rein, was das Thema XML (XSLT, JSON etc...) betrifft, auch in Verbindung mit PHP

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 19-03-2008, 10:28
raz667
 Newbie
Links : Onlinestatus : raz667 ist offline
Registriert seit: Mar 2008
Beiträge: 2
raz667 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Datentransfer mittels PHP über eine XML-Schnittstelle

Hallo zusammen,

ich bin damit beauftragt, ein Skript zuschreiben (vorzugsweise in PHP) welches XML Daten an einen Server senden und als Antwort ebenfalls XML Daten empfangen soll.

Da das für mich absolutes Neuland ist und ich bisher noch nie in die Verlegenheit kam, zwei Server miteinander interagieren zu lassen, tu ich mich auch im Moment richtig schwer, einen Ansatz für dieses Problem zu finden.

Für den Server, mit dem interagiert werden soll, gibt es einen Testlink.
Dieser lautet wie folgt: http://217.110.90.105/elvia/booking/...MAIN?OpenAgent

Mein erstes (und sicher nicht letztes) Problem ist es schon, eine Verbindung mittels PHP zu diesem Server aufzubauen. Ich habe folgenden Ansatz gewählt:

PHP-Code:
$fp fsockopen("http://217.110.90.105/elvia/booking/crs.nsf/RSHPMAIN?OpenAgent"80$errno$errstr30);
if (!
$fp) {
    echo 
"$errstr ($errno)<br />\n";
} else {
    
$out "GET / HTTP/1.1\r\n";
    
$out .= "Host: http://217.110.90.105/elvia/booking/crs.nsf/RSHPMAIN?OpenAgent\r\n";
    
$out .= "Connection: Close\r\n\r\n";

    
fwrite($fp$out);
    while (!
feof($fp)) {
        echo 
fgets($fp128);
    }
    
fclose($fp);

Wenn ich dieses Skript dann aufrufe, bricht dieses mit dem Fehlercode 0 ab.
Verbinde ich jedoch via curl (ohne irgendwelche Daten zu übergeben) zu diesem Server, bekomme ich eine Antwort.

Könnt Ihr mir sagen, woran das liegt? Ist PHP vielleicht nicht das geeignete Mittel?
Ich bin für jeden Tipp dankbar!

Gruß,
raz667

Geändert von asp2php (19-03-2008 um 10:46 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 19-03-2008, 10:37
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

fsockopen erwartet nur den Host, die URL-Parameter musst du in GET Anforderung angeben. Lese mal die User Contributed Notes http://de2.php.net/manual/en/function.fsockopen.php
Mit Zitat antworten
  #3 (permalink)  
Alt 19-03-2008, 10:43
raz667
 Newbie
Links : Onlinestatus : raz667 ist offline
Registriert seit: Mar 2008
Beiträge: 2
raz667 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi,

danke für deine Antwort!
Aber leider hilft mir das nicht sehr viel weiter. Wie gesagt, arbeite ich zum ersten Mal mit Verbindungen zu anderen Servern, also auch mit der Funktion fsockopen().

Da mir im Moment der Überblick fehlt, fällt es mir auch schwer aus den User Contribute Notes schlau zu werden, sind die mir doch noch ein wenig zu spezifisch und gefüttert mit Infos die mich nur noch weiter verwirren.

Ist es möglich, mir kurz zu beschreiben, wie ich die XML Daten als GET anforder bzw. kennst du ein Tutorial was sich zufällig genau mit dieser Thematik auseinandersetzt?

Das würde mir schwer helfen!

Danke,
raz
Mit Zitat antworten
  #4 (permalink)  
Alt 19-03-2008, 10:46
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ähm ... alle meine Erfahrungen habe ich fast nur aus der Doku und die dazugehörige User Contributed Notes sowie eigene Try 'n Error. Daher kann ich dir leider nichts anderes anbieten.

Was ist denn so schwer daran? OK, die meisten Bsp. sind POST und HEAD, aber daran kann es doch nicht liegen, oder?
Mit Zitat antworten
  #5 (permalink)  
Alt 19-03-2008, 15:12
Manko10
 Newbie
Links : Onlinestatus : Manko10 ist offline
Registriert seit: Mar 2008
Beiträge: 115
Manko10 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi,

ehrlich gesagt habe ich auch nicht allzu große Erfahrungen mit Socket-Verbindungen via PHP, da es wohl eher zu den Randthematiken gehört.
Jedoch habe ich mal eine Update-Funktion zusammengebastelt, die ich dir hier einfach mal poste:
PHP-Code:
<?php
function update_app() {
    
$url parse_url("http://www.example.com/bla.xml");
    if (!isset(
$url['port'])) {
        
$url['port'] = 80;
    }
    
$url['query'] =  '';
    
$url['protocol'] = $url['scheme'].'://';
    
$eol "\r\n";
    
    
$headers =  "POST ".$url['protocol'].$url['host'].$url['path']." HTTP/1.0".$eol.
                
"Host: ".$url['host'].$eol.
                
"Referer: ".$url['protocol'].$url['host'].$url['path'].$eol.
                
"Content-Type: application/x-www-form-urlencoded".$eol.
                
"Content-Length: ".strlen($url['query']).$eol.$eol.$url['query'];
    
    
$file = @fsockopen($url['host'], $url['port'], $errno$errstr30);
    if (
$file) {
        
fputs($file$headers);
        
$result '';
        while (!
feof($file)) {
            
$result .= fgets($file500);
        }
        
fclose($file);
        
        if (!
stristr($result'200 OK')) {
            return 
false;
        }
        
        
$result preg_replace('#^.*\r\n\r\n#s'''$result);
        return 
simplexml_load_string($result);
    } else {
        return 
false;
    }
}
?>
Das ganze verbindet zu einem Server und holt XML-Daten. Danach werden die HTTP-Header entfernt und das ganze als SimpleXML-Resource zurückgegeben.

Ich hoffe mal, du kannst das für dich umbauen. Um Daten zu senden, verwendest du dann statt fputs() fwrite().
Mit Zitat antworten
  #6 (permalink)  
Alt 19-03-2008, 17:14
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Überlass einer HttpClient-Klasse die Drecksarbeit mit dem Socket. Die von Incutio ist ganz ok!
Mit Zitat antworten
  #7 (permalink)  
Alt 20-03-2008, 10:43
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Curl ?

BTW:
Eigentlich kein Xml-Problem -> falsches Forum
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:58 Uhr.