Curl POST & Codierung

soa

Erfahrenes Mitglied
Einen schönen guten Morgen,

ich habe ein kleines Problem mit einem Curl POST . Ich versende meine Daten auf folgende Weise:

$postd = 'root='.$post;

Das Ergebnis ist auf der gegenseite die Folgende: <root> Mein Text </root>

Jetzt versuche ich einfach ein 2. Element hier einzubauen. Sprich die Ausgabe sollte so aussehen.

<root> <name> Mein Text </name> </root>

Das ist für mich derzeit ein Problem. Ich versuchte es bisher so:

$postd = 'root=<name>'.$post.'</name>';

Leider wird dieses Zeichen "<" als &lt;name> interprätiert.

Eine UTF 8 Codierung liegt vor: <?xml version='1.0' encoding='utf-8'?>

Hat jemand eine passende Idee ?

Viele Grüße
SOA
 
Sende doch einfach nur den Namen, z.B. $postd = 'var='.$post; und dann auf der gegenseite sagst du dann einfach $foo = '<root><name>'.$_GET['var'].'</name></root>';
 
Moin ,

danke erst einmal für Deine Antwort. Mein Curl Script läuft bei mir auf einem Webserver.
Die "Gegenseite" ist ein Apache Tomcat , auf dem ich einen Java Server ausgesetzt habe.

das Script benötigt eine Codierung <root><element> Inhalt </element> </root>

Sonst läuft es leider nicht....

Es muss also so sein, dass < auch als < interprätiert wird....
 
OK.


PHP:
  //Starten der CURL SESSSION und speichern in $ch
   $ch = curl_init(); 
    

// Optionen , für die Verbindung 
curl_setopt($ch, CURLOPT_URL, 'http://localhost:8080/axis2/services/CustomerService/getMe'); 


 
$post1 = '&pNUMBER='  . urlencode("test test ");
$post = urlencode("Hallo äö ü ßß");

 $postd = 'root='.$post1;
 



// Req. HTTP Header Values 
 //$header = "Content-Type: text/xml; charset=UTF-8";

        curl_setopt($ch, CURLOPT_HEADER, 1); 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_TIMEOUT, 60);
        //curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

       curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
       curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);



//Header Informationen auslesen zulassen
curl_setopt($ch, CURLINFO_HEADER_OUT, 0);
//setzen der anzuwendenden HTTP Transaktion
curl_setopt($ch, CURLOPT_POST, true); 
// senden des assozaitiven Arrays 
curl_setopt($ch, CURLOPT_POSTFIELDS, $postd);

//SSL
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);


$data = curl_exec($ch); 


print_r($data);

if(curl_errno($ch))
  {
    print curl_error($ch);
  }


//schließen der Verbindung
curl_close($ch);

So, nun sende ich entweder so :

PHP:
<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
  <soapenv:Body>
    <axis2ns6:getMe xmlns:axis2ns6="http://ws.apache.org/axis2">
      <root>
      </root>
      <pNUMBER>hhuhuhu</pNUMBER>
    </axis2ns6:getMe>
  </soapenv:Body>
</soapenv:Envelope>

<root> </root>
<pNUMBER>hhuhuhu</pNUMBER>

ader nicht so:

<root>
<pNUMBER>hhuhuhu</pNUMBER>
</root>

Ich benötige ein Wurzelelement um meine Kindelemente ....

Gruß
SOA
 
Sieht sehr nach SOAP aus. Sicher dass Du nicht http://uk3.php.net/soap verwenden willst?

Was curl angeht, das sieht richtig aus soweit ich sehe. Problem liegt vielleicht auch auf Java-Seite. Aber wie gesagt, probier lieber SOAP direkt als dir das selber zu bauen.
 
Vielen Dank. Wie Du richtig erkannt hast, ist das eine SOAP Message . Ich wollte eben nicht mit SOAP arbeiten. Das funktioniert prächtig...

Es sollte nun mal der REST Ansatz betrachtet werden.

VG
 
Zurück