XML-RPC response opvangen met PHP

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een PHP script waarin wat XMl codes geparsed worden naar mijn server.
Met de XML definities kan er op de server een account aangemaakt worden.
Ik ben helaas een beginner op XML gebied.
Het script maakt de account aan en geeft een response status "OK" terug op het scherm.
Nu wordt deze response simpelweg op het scherm getoond.
Hoe vang ik een XML response op met PHP zodat ik erop kan reageren?

Acties:
  • 0 Henk 'm!

  • Cyphax
  • Registratie: November 2000
  • Nu online

Cyphax

Moderator LNX
Je kunt PHP de pagina laten openen met fopen() (als je get gebruikt om de data er naartoe te sturen iig) en dan wat er terugkomt inlezen, vervolgens kun je zelf wat doen met die status. Is dat wat je bedoelt?

[ Voor 27% gewijzigd door Cyphax op 15-08-2006 11:41 ]

Saved by the buoyancy of citrus


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php

define("HOST", "server.'xxxxx.nl");
define("PORT", 8443);
define("PATH", "enterprise/control/agent.php");
define("LOGIN", "xxxxx");
define("PASSWD", "xxxxx");
define("PROTO_VER", "1.3.1.0");

$proto = PROTO_VER;
$data =<<<EOF
    <packet version="1.3.1.0">
    <domain>
    <add>
    
XML TAGS

EOF;

function write_callback($ch, $data)
{
echo $data;
return strlen($data);
}

function sendCommand()
{
$url = "https://" . HOST . ":" . PORT . "/" . PATH;

$headers = array(
"HTTP_AUTH_LOGIN: " . LOGIN,
"HTTP_AUTH_PASSWD: " . PASSWD,
"HTTP_PRETTY_PRINT: TRUE",
"Content-Type: text/xml",
);

// Initalize the curl engine
$ch = curl_init();

// Set the curl options
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
// this line makes it work under https
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_HTTPHEADER, &$headers);

// Set the URL to be processed
curl_setopt($ch, CURLOPT_URL, $url);

// Set the callback functions
curl_setopt($ch, CURLOPT_WRITEFUNCTION, write_callback);

// Set the data to be send
global $data;
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

// Debug, however...
curl_setopt($ch, CURLOPT_VERBOSE, 1);

$result = curl_exec($ch);

if ($result == CURL_OK) {
//print_r(curl_getinfo($ch));
} else {
echo "\n\n-------------------------\n" .
"cURL error number:" .
curl_errno($ch);
echo "\n\ncURL error:" . curl_error($ch);
}

curl_close($ch);

return;
}

sendCommand();

?>


Edit:Er maar even [php] tags om gezet.

[ Voor 1% gewijzigd door Janoz op 15-08-2006 15:51 ]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Ik begrijp het probleem niet helemaal. Ergens in je script geef je aan dat er enkel een OK afgedrukt wordt. Dit kun je natuurlijk gewoon vervangen door de actie die je wenst. Of maak je gebruik van een bestaand script? In dat geval kun je beter bij de maker van dat script aankloppen.

--- Edit

Als ik het script zo zie wordt de uitvoer al keurig af gevangen.

[ Voor 12% gewijzigd door Janoz op 15-08-2006 11:45 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik krijg niet alleen ok maar echte xml output. Dus inclusief tags en alles ;-)
Er wordt in dit script niets afgevangen.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Begrijp je je eigen code wel? Of is het je eigen code niet?

Het lijkt me daarnaast handig wanneer je je code tussen [php] tags zet zodat het beter leesbaar is.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het versturen van de CURL en de response wordt opgevangen door het script.
Het inhoudelijke van de XML output niet en daar ben ik naar op zoek.
De XML moet omgezet worden in iets leesbaars voor PHP.

Acties:
  • 0 Henk 'm!

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09 23:18

djc

Ik denk dat je $HTTP_RAW_POST_DATA of php://input (als je 4.3.0 of hoger gebruikt) zoekt.

Rustacean


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Kan je me een tip/richting geven hoe ik dit in bovenstaand script kan integreren ?:)

Acties:
  • 0 Henk 'm!

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09 23:18

djc

Nou, je wil toch de XML request opvangen om naar aanleiding ervan een XML response te kunnen geven? In dat geval kun je met $HTTP_RAW_POST_DATA de XML uit de request te pakken krijgen.

Rustacean


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nee, het XML request wordt naar de server gestuurd. Als response komt er een XML opmaak terug.
Met PHP wil ik de XML variabelen oppakken en hier iets mee kunnen doen. Bijv. in een db wegschrijven of een bepaalde boodschap op het scherm plaatsen.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

http://nl3.php.net/manual/en/function.curl-exec.php

Hier staat redelijk duidelijk hoe je ervoor kunt zorgen dat je je resultaat op kunt vangen ipv afdrukken.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok, thx, ik ga dit eens goed doornemen.

Verwijderd

Topicstarter
Nu staat hier de handleiding voor de Plesk API:
http://download1.swsoft.com/Plesk/Plesk7.5/Doc/plesk-7.5r-sdk-html/docs/plesk_agent/index.html

Voor mij onbegrijpelijk hoe ik a.h.v. deze handleiding een werkende XML op kan bouwen.
M.a.w. hoe kom ik erachter welke definities ik nodig heb om bijv. een client aan te maken op de server?

  • Creepy
  • Registratie: Juni 2001
  • Nu online

Creepy

Tactical Espionage Splatterer

Eeh, er staan kant en klare voorbeelden voor PHP en PERL in?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
Ja klopt, probeer die a.h.v. de handleiding maar eens zelf in elkaar te zetten.
Het voorbeeld betreft een domein. Nu gaat het om een client die aangepast moet worden.
Ik volg de logica/opbouw v/d handleiding gewoon niet.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Die handleiding bestaat uit een korte inleiding, enkele voorbeelden hoe een request te doen in php en perl en vervolgens een exacte beschrijving van hoe de xml er uit moet zien. Veel duidelijker kun je het echt niet krijgen lijkt me. Er zit zelfs een xsd bij zodat je met een XML editor zelf valide xml requests kunt valideren

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Zoals ik al eerder zei ben ik een beginner op XML gebied. Om te zeggen dat de handleiding duidelijk is schiet ik niets mee op. Een handleiding is NIET duidelijk als je niet weet hoe deze te interpreteren toch? Bedankt in ieder geval, ik zoek nog even verder.
Pagina: 1