Avatar billede trinerunge Nybegynder
21. juni 2012 - 11:22 Der er 6 kommentarer og
1 løsning

Sende soap 1.2 request via ftp med php

Hej Alle

Jeg mangler hjælp til at kode et soap kald via ftp med et lille php-script. Jeg skal sende en request afsted som følger det her format:

POST /ws/Default.asmx HTTP/1.1
Host: www.dette_er_en_host.dk
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <Get xmlns="http://tempuri.org/">
      <guid>string</guid>
    </Get>
  </soap12:Body>
</soap12:Envelope>

Og så skal jeg modtage en respons der ser sådan her ud, hvor jeg så skal hente en (XML) "string" ud:

HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <GetResponse xmlns="http://tempuri.org/">
      <GetResult>string</GetResult>
    </GetResponse>
  </soap12:Body>
</soap12:Envelope>

Jeg har skrevet den her lille stump php-kode, men den afspiller bare det her: "test xmlef9b8e5094ce4e5a9d7ce8b0d3cb695dtest xml slut" - og henter altså ikke noget ud:

<?php
header("POST /ws/Default.asmx HTTP/1.1");
header("Host: www.dette_er_en_host.dk");
header("Content-Type: application/soap+xml; charset=utf-8");
header("Content-Length: 10000000000");
echo "test xml";
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
echo "<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">";
echo "<soap12:Body>";
echo "<Get xmlns=\"http://tempuri.org/\">";
echo "<guid>Dette_er_en_string</guid>";
echo "</Get>";
echo "</soap12:Body>";
echo "</soap12:Envelope>";
echo "test xml slut";
?>

Jeg gir 200 point, til den som kan hjælpe mig med at "Get"te responsen og hente "string" ud af "GetResult".

På forhånd tak

Trine
Avatar billede olebole Juniormester
21. juni 2012 - 13:44 #1
<ole>

Med FTP? Du må nok forklare, hvad det er, du gerne vil  =)

/mvh
</bole>
Avatar billede olebole Juniormester
21. juni 2012 - 13:46 #2
Hva' pokker ...!!! Trine ...?!??!!! Long time - no see. Hej, Ole her ... Sascha's far  :D
Avatar billede trinerunge Nybegynder
21. juni 2012 - 14:49 #3
Hej Ole.

Nej hvor sjovt at du også huserer herinde. Ja nu skal jeg hente noget XML via ftp, soap og php, men det virker ikke, så nu har jeg brug for noget hjælp :-)

kh Trine
Avatar billede olebole Juniormester
21. juni 2012 - 15:04 #4
Det har jeg gjort i over tolv år. Hils 'tøsen' ... hun må jo også være en ung dame efterhånden. Jeg underviste faktisk Amanda på et tidspunkt - lige omkring hun blev 'brandfrue' og mor in spe. Hende må du endelig også hilse  =)

Nå, back to the drawingboard! Jeg forstår ikke rigtig, du skriver FTP. http://tempuri.org/ er jo en HTTP-adresse
Avatar billede trinerunge Nybegynder
26. juni 2012 - 16:13 #5
Hej Ole

Wow. 12 år. Ja så længe har jeg ikke været her :-)

Nå men back to XML-reality: Det er muligt at jeg ikke forstår hvad der sker... jeg uploader via ftp en php-fil til et sted på en server. Denne php har en XML-request i sig a la det jeg har skrevet ovenfor.

Requesten har jeg fået fra vores leverandør. Den virker hvis jeg sender den via programmet Altova, det vil sige. Jeg får smækket en XML-fil tilbage. Men jeg vil gerne kunne hente vores XML-filer på en nemmere måde og mere simpel måde. Jeg har hørt at det ikke skulle være svært - nærmest standard.

Hvis du kan hjælpe ville jeg blive rigtig glad og så får du jo også en masse dejlige points.

Jeg skal nok hilse datteren :-)
Avatar billede trinerunge Nybegynder
28. juni 2012 - 21:08 #6
Så skete det igen. Jeg fandt ud af det jeg skulle finde ud af ad anden vej, men nu er jeg jo et generøst menneske, så her er koden:

<?php

$guid='guid_kode_sættes_ind_her';
    try{
       
        $client = new SoapClient('http://www.host_sættes_ind_her.dk/osv?WSDL',array('trace'=>1));

       
        try{
           
            $result = $client->Get(array('guid'=>$guid));
           
            header ("Content-Type:text/xml");     
           
            print $result->GetResult;
       
        }

        catch(Exception $e){
           
            print $e->getMessage().' ('.$e->faultcode.')';
           
            print '<br /><pre>';
           
            print '<br />Request: '.htmlspecialchars($client->__getLastRequest());
           
            print '<hr />Response: '.htmlspecialchars($client->__getLastResponse());
       
        }
   
    }

    catch(Exception $e){
       
        echo $e->getMessage();
   
    }

?>
Avatar billede trinerunge Nybegynder
06. juli 2012 - 15:14 #7
løst
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester