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, 11: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 11:46 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 19-03-2008, 11: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, 11: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, 11: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, 16: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, 18: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, 11: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

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

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


 

Aktuelle PHP Scripte

ModuleStudio ansehen ModuleStudio

Modellgetriebene Entwicklung von Erweiterungen für das Open Source Framework Zikula.

15.01.2019 Guite | Kategorie: PHP ENTWICKLUNGSUMGEBUNG
FAQ Script PHP ansehen FAQ Script PHP

FAQ Script PHP is a simple knowledgebase script and you could use it as a Frequently Asked Question section on your website. It is written in PHP and MySQL.

14.01.2019 nevenov | Kategorie: PHP/ FAQ
Admidio Mitgliederverwaltung

Admidio ist eine kostenlose Online-Mitgliederverwaltung, die für Vereine, Gruppen und Organisationen optimiert ist. Sie besteht neben der Mitgliederverwaltung aus einer Vielzahl an Modulen (Foto-, Download-, Terminverwaltung), die in eine neue oder besteh

08.01.2019 webmaster52@ | Kategorie: PHP/ Groupware
 Alle PHP Scripte anzeigen

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