Archiv verlassen und diese Seite im Standarddesign anzeigen : Xml-rpc
Servus,
ich möchte über XML-RPC Daten auslesen und baue die XML-Nachricht in
der Form zusmamen!
POST /RPC2 HTTP/1.1
User-Agent:
host: 192.168.2.150
content-type: text/xml
Content-length: 706
<?xml version="1.0"?>
<methodCall>
<methodName>conference.enumerate</methodName>
<params>
<param>
<value>
<struct>
<member>
<name>authenticationUser</name>
<value><string>admin</string></value>
</member>
<member>
<name>authenticationPassword</name>
<value><string>blabla</string></value>
</member>
<member>
<name>enumerateFilter</name>
<value><boolean>active</boolean></value>
<value><boolean>completed</boolean></value>
</member>
</struct>
</value>
</param>
</params>
</methodCall>
Wie kann ich das händisch zum testen losschicken, ob ich ein Response bekomme? Sorry für die vermeintlich blöde Frage, aber ich bekomme es
irgendwie nicht hin. Muss ich es als HTML-Dokument verpacken und dann im Browser aufrufen oder was muss ich tun?
Danke im Voraus
Gruß,
Cordell
eViL_oNe
14.10.2009, 00:47
ohne Programmierkenntnisse könntest du einen telnet-Client nutzen, um das Ding an den Server zu schicken. Mit Programmierkenntnissen würde ich so was ohnehin lassen und gleich eine RPC-API nutzen
PS: wieso nicht gleich SOAP verwenden? Ich kann mir kaum vorstellen, dass die Gegenseite das nciht unterstützt.
Das mit RPC-API oder gar auf SOAP zu wechseln ist leider nicht!
Das ganze ist ein Steuerungssystem-Projekt im Videokonferenzumfeld und in SIMPL+ (C-ähnlich) entwickelt!
Um mit der MCU (Videokonferenzbrücke) zu kommunizieren gibt es eine XML-RPC Remote Management API, die einzig und allein über XML-RPC nutzbar ist.
In Java, C#, Python und der Gleichen wär das alles kein Problem, da würd ich mir schnell nen Client schreiben, aber mit SIMPL sieht die Sache ganz anders aus!
Das TCP/IP-Client Modul von Crestron, schickt per POST leider meine XML-Nachricht nicht raus. Deswegen meine Frage, ob ich das händisch mal machen kann, um eigentlich nur zu sehen ob mein XML-RPC Aufruf korrekt ist und ich auch einen Response bekomme.
Über Telnet (Port 23) komme ich nicht drauf. Die MCU bietet lediglich noch einen Console-Port an, mit dem man sich per RS232 verbinden kann. Dieser dient aber nur dazu die IP-Konfiguration vorzunehmen, bietet jedoch keinerlei relevante Informationen, die ich brauch. Dafür wurde halt extra die Remote Management API über XML-RPC entwickelt!
Ist ansonsten mein XML korrekt und wird auch genau so mit dem HTML-Header (POST /RPC2...) losgeschickt?
Versuch doch mal 80 als Port, evtl. steht ja ein httpd dahinter.
Schon probiert, klappt auch nicht! :o
Gibt es denn keine einfache Variante mal einen HTML-Post Request mit eingebetteten XML-RPC an ein Ziel zu schicken?
Ist meine ganze Nachricht ansonsten korrekt? Wieso muss eigentlich die exakte Content-Length mitangegeben werden?
Also wenn du nicht weißt, wohin du deine Anfragen stellen sollst, wirst du keine Chance haben. Du musst also auf jeden Fall rausfinden, wie du die Verbindung aufbaust, also IP/Port. Eventuell gibts da ja ein Handbuch oder man kann bei der Firma, die das Ding gebaut hat nachfragen, oder was auch immer...
Auf den ersten Blick sieht die Anfrage gut aus. Lies dir aber für die absolute Korrektheit das RFC 2616 (http://www.w3.org/Protocols/rfc2616/rfc2616.html) durch, dort werden unter Requests (http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html#sec5) diese beschrieben und definiert.
Also wenn du nicht weißt, wohin du deine Anfragen stellen sollst, wirst du keine Chance haben. Du musst also auf jeden Fall rausfinden, wie du die Verbindung aufbaust, also IP/Port. Eventuell gibts da ja ein Handbuch oder man kann bei der Firma, die das Ding gebaut hat nachfragen, oder was auch immer...
Auf den ersten Blick sieht die Anfrage gut aus. Lies dir aber für die absolute Korrektheit das RFC 2616 (http://www.w3.org/Protocols/rfc2616/rfc2616.html) durch, dort werden unter Requests (http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html#sec5) diese beschrieben und definiert.
IP und Port habe ich :mauer: es soll über Port 80 funktionieren, hab ich auch im TCP/IP-Client Modul so eingestellt. Ich habe alle relevanten Infos. Vielleicht liegt es auch an dem Modul, welches ich benutze.
Muss der User-Agent und Content-Length eigentlich explizit angegeben werden?
Im RFC steht, dass man das User-Agent Feld setzen sollte. Nimm doch dafür als Wert einfach das selbe, was z.B. der Fuchs mitgibt:
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)
Wenn du nun weißt, wie die Verbindungsparameter sind, kannst du es ja testen. Was kommt dabei so raus?
Was kommt dabei so raus?
Das ist ja das Problem, es kommt einfach nichts! Keine Reaktion einfach nix :confused:
Das ist ja das blöde, raff nicht, was ich noch machen soll...
Der Verbindungsaufbau klappt aber schon, oder?
Welches OS nutzt du? Wie bist du vorgegangen? Bekommst du irgendwann einen Verbindungsabbruch? Passiert einfach gar nichts (über lange Zeit auch nicht)?
Ich nutze WinXP und kann dieses auch nicht wechseln, da die Entwicklungsumgebung nur darauf läuft (Crestron SIMPL Windows / SIMPL+)
Bei dem TCP/IP-Client Modul handelt es sich um ein SIMPL Windows Modul, welches mit einem SIMPL+ Programm kommuniziert!
Es passiert einfach nichts... Im Debugger sehe ich wie der http post an den Client weitergereicht wird und dann passiert nichts mehr! Warte zur Zeit auch noch auf Antwort auf meine Support-Anfrage! :rolleyes:
Bist du schon dem Rat von eViL_oNe gefolgt und hast es mit telnet versucht?
> telnet host.com 80[enter]
GET /RPC2 HTTP/1.1[enter]
User-Agent: ...[enter]
host: host.com[enter][enter]
Wenn das so schonmal klappt, kannst ja dann den POST Request testen.
Wenn ich es mit Telnet mache, sieht es folgender maßen aus:
http://www3.pic-upload.de/15.10.09/5emd8ou3fi86.jpg
Die Schrift ist unsichtbar und sobald ich nach dem Host enter drück springt er zu C:\> zurück!
Ist das Verhalten identisch, wenn du ein anderes Ziel angibst, also z.b. /index.html oder so?
In der Eingabeaufforderung springt er gleich auf C:\> zurück und mit Putty schließt sich einfach das Fenster und Putty beendet!!
So langsam ist man hier soweit, dass ich es mit Java o.ä. machen kann! Herrlich...
So hab den Client nun in C# geschrieben und siehe da, funktioniert einwandfrei!
Jetz muss ich mich nur noch um das XML kümmern, da ich nicht die Informationen zurück geliefert bekomme, die ich gern hätte! Da ich
zum ersten Mal mit XML-RPC arbeite und mit der Tandberg-API, die ich nicht
so eindeutig finde, ist das etwas blöd!
Aber wenisgtens funktioniert es nun!
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.