Neuen Task über XMLRPC

  • Hey :)


    Ich möchte über die XML-RPC Schnittstelle eine neue Aufgabe erstellen.


    Die Variablen sollen über ein HTML Formular festgelegt werden und dann über die Schnittstelle in den Server eingetragen werden als Aufgabe.


    Ein HTML Formular kann ich erstellen nur meine Frage ist wie muss ich das übergeben? Welche Funktion brauche ich? Wie genau verbindet man sich mit der Schnittstelle?


    Viele Grüße :)

  • Hallo,


    die Doku richtet sich an Entwickler. In 5 Minuten wird man den Inhalt der Doku aber nicht erfassen können. Der gesuchte Abschnitt für die XML-RPC Dokumentation befindet sich hier: http://greyhound-software.com/docs/rpc/texts/5_XML-RPC


    Dort gibt es auch ein Beispiel. Du solltest dir aber auch anschauen, was XML-RPC eigentlich ist (die Webseite für die XML-RPC Spezifikation ist in unserer Doku ganz oben verlinkt).


    Die Authentifizierung wird übrigens hier erklärt: http://greyhound-software.com/…c/texts/8_HTTP-Protokolle

  • Wenn ich das aufrufe:


    Kommt:

    Code
    1. Warning: file_get_contents(http://localhost:80/xmlrpc) [function.file-get-contents]: failed to open stream: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. in G:\xampplite\htdocs\xml.php on line 11


    Habe es schon mit Port 9080 probiert. Im Server auf 443 umgestellt dann mit 443 und 9443 probiert. Nichts klappt :S
    Grüsse Guido.

  • Also wenn ich über den Browser auf http://localhost:80/xmlrpc gehe kommt folgendes:



    Scheint ja ansich gut zu sein :) Jedoch über das Script funktioniert es nicht.


    Firewalls sind aus und würde mich auch wundern da ich alles lokal versuche und nicht übers Netzwerk.


    Http Protokol ist natürlich in Greyhound an aber kein SSL, vorerst noch nicht relevant.

  • So habe diese Library runtergeladen und alles included kommt der gleiche Fehler


    Script:


    PHP
    1. <?php
    2. include 'xmlrpc.inc';
    3. include 'xmlrpc_wrappers.inc';
    4. include 'xmlrpcs.inc';
    5. $client = new xmlrpc_client("http://localhost:9080/xmlrpc");
    6. $client->setCredentials("gpadmin", "gpadmin");
    7. $msg = new xmlrpcmsg("RpcInfo.GetServerSettings", array(new xmlrpcval()));
    8. $resp = $client->send($msg);
    9. if($resp->faultCode()) echo 'Error!' . $resp->faultString(); else echo 'Ok: done: ' . $resp->value();
    10. ?>


    Fehler:




    Zitat

    Connect error: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. (10060)

  • Hallo,


    ist denn eine Verbindung vom GREYHOUND Client über das XML-RPC Protokoll möglich? Das Protokoll kann in den Erweiterten Einstellungen festgelegt werden.


    Beim geposteten Quelltext verwendest du übrigens einmal Port 80 und einmal Port 9080. Welcher ist es denn nun? Wenn der GREYHOUND Client eine Verbindung herstellen kann, PHP aber nicht, dann liegt hier irgendwo ein Konfigurationsproblem vor. Ohne, dass ich jetzt direkt für dich den Fehler in der Konfiguration suche, kann ich dir leider nicht helfen. Die geposteten Quelltexte scheinen in Ordnung und in unserer Umgebung (z.B. im GCC) ist eine Verbindung mit der von mir geposteten Bibliothek zum GREYHOUND problemlos möglich.

  • Moin Guido,


    die Verschlüsselung kann natürlich nur funktionieren wenn Du sie für das RPC-Protokoll aktivierst - wenn also entsprechende SSL-Zertifikate hinterlegt werden, funktioniert natürlich auch die Verschlüsselung im GH-Client für das RPC-Protokoll.


    Zu Port 80 und 9080: Im GH-Admin kann man definieren an welchen Port das RPC-Protokoll gebunden wird (Im Konfigurationsbereich für das HTTP-Protokoll..). Auf dem hier angegebenen Port ist die RPC-Schnittstelle dann verfügbar!


    Ich denke wir sollten nochmal auf dem kurzen Dienstweg schauen was bei Euch falsch konfiguriert ist.


    Beste Grüße
    hildebrand


    P.S. Ihr habe ja bereits eine Anwendung laufen die auf dem RPC-Protokoll aufsetzt - hier funktioniert alles reibungslos.

  • Code 1:



    Fehler:

    Zitat


    Warning: file_get_contents(http://localhost/xmlrpc) [function.file-get-contents]: failed to open stream: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. in G:\xampplite\htdocs\xml.php on line 15


    Warning: xmlrpc_is_fault() expects parameter 1 to be array, null given in G:\xampplite\htdocs\xml.php on line 17

    Code 2:



    Fehler:

    Zitat

    Ok: 0

    Code 3:


    PHP
    1. <?php
    2. $url = "http://localhost/xmlrpc";
    3. $auth = base64_encode("____:____");
    4. $header = array("Authorization: Basic $auth");
    5. $opts = array('http' => array ('method' => 'POST', 'header' => $header));
    6. $ctx = stream_context_create($opts);
    7. file_get_contents($url,false,$ctx);
    8. ?>


    Fehler:

    Zitat

    Warning: file_get_contents(http://localhost/xmlrpc) [function.file-get-contents]: failed to open stream: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. in G:\xampplite\htdocs\xml3.php on line 7


    Fatal error: Maximum execution time of 60 seconds exceeded in G:\xampplite\htdocs\xml3.php on line 9

  • So ich habe mir noch mal eine andere Library runtergeladen und jetzt kommt wenigstens eine richtige Antwort und zwar folgender Code:



    Und nun kommt folgende Meldung vom Server:


    Zitat

    Something went wrong - 830 : Invalid client id "___" (to short).








    "___" ist der Username.


    Edit:


    Hab mir das XML mal ausgeben lassen:



    POST /xmlrpc HTTP/1.0
    User-Agent: MyTestClient
    Host: 127.0.0.1
    Authorization: Basic "base64 von user:password"
    Content-Type: text/xml
    Content-length: 121
    <?xml version="1.0"?>
    <methodCall>
    <methodName>RpcInfo.GetServerSettings</methodName>
    <params>
    </params>
    </methodCall>


    So hab mir nochmal die Doku angeschaut und gesehen das ich Clientid etc. vergessen hatte.


    Habe nun exakt wie in Doku beschrieben Clientid erzeugt mit username zusammengefügt getrennt durch minus und das passwort getrennt durch doppelpunkt. Dieses dann per base64 codiert und übergeben an xml client nun kommt folgende Fehler meldung:


    Something went wrong - 831 : Invalid client id "d7f3be062d215485996f4254bfb675e428674-rafaelh" (missing divider "-").