Sockets [Erledigt, aber nicht gelöst]

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Sockets [Erledigt, aber nicht gelöst]

Beitragvon Jan » Di, 20. Dez 2016 10:11

Hallo,

gerade verzweifle ich am Support enies Lieferanten. Es geht darum, aus einer Heizungsanlage die aktuellenWerte auszulesen. Das geht per RESTful Webservices. Eine Verbindung des Gerätes zum Internet gibt es nicht - das ist sowohl im Gerät abgeschaltet als auch durch Einstellungen in der Firewall geblockt.

Ich habe also mal eine simple Anfrage geschrieben:

Code: Alles auswählen
nSocket := SocketNew(AF_INET, SOCK_STREAM, 0, @nError)
lSuccess := SocketConnect(nSocket, , "192.168.1.7", 8080, @nError)
cText := Ansi2Utf8("GET 192.168.1.7:8080/user/menu HTTP/1.1" + crlf + crlf)
nRueckgabe := SocketSend(nSocket, cText, , , @nError)


nSocket ist sauber gefüllt. lSuccess = .T.. nError bleibt bei jeder Abfrage 0. Also sollte eigentlich immer alles sauber abgelaufen sein.

Aber: Wenn ich dann per SocketRecvString die Rückgabe abfrage, bekomme ich immer diese Meldung:

HTTP/1.1 404 Not Found
Content-Length: 150
Content-Type: application/xml;charset=UTF-8
Cache-Control: no-cache
Date: Tue, 20 Dec 2016 09:52:40 GMT

<?xml version="1.0" encoding="utf-8"?>
<eta version="1.0" xmlns="http://www.eta.co.at/rest/v1">
<error>No such application or domain</error>
</eta>


Der Support meint, ich würde wohl eine falsche URI verwenden. Kann aber nicht sein, denn wenn ich die in den Browser eingebe bekomme ich ganz sauber das Ergebnis.

Was mache ich da falsch?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11449
Registriert: Fr, 23. Sep 2005 17:23
Wohnort: 49328 Melle

Re: Sockets

Beitragvon georg » Di, 20. Dez 2016 10:25

Hallo, Jan -


ich würde in Firefox mittels F12 das Debugging (naja, fast Debugging) aktivieren, und dann die URI mal aufrufen und sehen, was da zwischen Browser und Gerät ausgetauscht wird.
Liebe Grüsse aus der Eifel,

Georg
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1748
Registriert: Fr, 08. Feb 2008 21:29

Re: Sockets

Beitragvon nightcrawler » Di, 20. Dez 2016 11:11

Wie Georg schon geschrieben hat: Datenverkehr mitloggen.
Ich vermute, dass Du den falschen Dienst anfrägst und evtl ein accept:json oder accept:xml mit in den Request einbauen musst.
--
Joachim
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
Benutzeravatar
nightcrawler
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 239
Registriert: Di, 24. Apr 2012 15:33
Wohnort: 72181 Starzach

Re: Sockets

Beitragvon Jan » Di, 20. Dez 2016 11:49

Hallo Georg und Joachim,

da stelle ich mal eine ganz blöde Frage: Warum müsste ich bei einem GET noch Angaben machen müssen wie ein accept? Insbesondere im Hinblick darauf das ich bei einem Aufruf von "192.168.1.7:8080/user/menu" im Browser das korrekte Ergebnis zurückgeliefert bekomme?

Sorry, wenn ich mich da etwas Begriffstutzig anstelle. Das ist immer noch nicht so ganz meine Welt.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11449
Registriert: Fr, 23. Sep 2005 17:23
Wohnort: 49328 Melle

Re: Sockets

Beitragvon nightcrawler » Di, 20. Dez 2016 11:55

Hallo Jan,
Dein Browser schickt das alles mit ... dem ist dann egal, ob HTML, XML, JSON oder eine Datei (der Dateiinhalt) zurückkommt. Der kann eben alles irgendwie anzeigen oder speichern. Diese Meta-Ebene wird im Header dem Sender mitgeteilt.
Der Sender schaut nun, was er alles senden kann (möglicherweise ist die Applikation nur auf JSON programmiert und kann kein XML, dann muss der Sender eben JSON ausliefern) und tut das entsprechend. Wenn Du nun dem Sender gar nicht mitteils, ws Du akzeptierst, dann weiss er nicht was zu tun ist und schickt eine Fehlermeldung.
Ich gehe schwer davon aus, dass Dein Socket per se nur HTML anfordert. Die Antwort vom Sender ist aber XML (wie im Header erkennbar). Er hat evtl keinen Dienst für HTML Ausgabe implementiert.
Deshalb der Vorschlag nach einem Logging - dort kannst Du den Header der Antwort anschauen und entsprechendes auch abfragen.
--
Joachim
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
Benutzeravatar
nightcrawler
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 239
Registriert: Di, 24. Apr 2012 15:33
Wohnort: 72181 Starzach

Re: Sockets

Beitragvon ramses » Di, 20. Dez 2016 12:42

Hallo Jan

sende mal nur folgendes "GET 192.168.1.7:8080/user/menu"

den die Fehlermeldung sagt doch dass der Server "HTTP/1.1" nicht findet.

Cu Carlo
ramses
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 347
Registriert: Mi, 28. Jul 2010 16:16

Re: Sockets

Beitragvon Jan » Di, 20. Dez 2016 13:22

Leider war der Support des Herstellers nicht gewillt oder nicht in der Lage mir mitzuteilen, welche Einstellungen exakt dafür notwendig sind. Ich habe die einschlägigen alle durchgetestet, insbesondere natürlich die, die in den verschiedenen Rückgaben aufgeführt werden. Das hat alles nichts gebracht.

Ich hab mir das jetzt mal total einfach gemacht. Da ich in diesem fall einfach nur GET-Abfragen mache, bin ich auf LoadFromUrl() umgestiegen. Das hat dann sofort anstandslos funktioniert. Da kann man im nachhinein nur sagen: Warum einfach, wenn es auch kompliziert geht. ;-)

Auch wenn das letztendlich nicht zum gewünschten Ziel geführt hat - danke für alle Eure Hinweise und Tipps.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11449
Registriert: Fr, 23. Sep 2005 17:23
Wohnort: 49328 Melle

Re: Sockets [Erledigt, aber nicht gelöst]

Beitragvon Rudolf » Mi, 21. Dez 2016 9:06

Hallo Jan,
ich nehme TServerXMLHTTPRequest() von OT4XB oder Chilkat, hier kann man noch diverse Parameter setzen wie timeout, ignorecertall etc.
Grüße
Rudolf

Code: Alles auswählen
oHttp := TServerXMLHTTPRequest():New()
if oHttp:Open("GET",cUrlList,,cUser,cPWD)
     oHTTp:lIgnoreCertAll := .t.
     *oHttp:SetTimeOuts( nResolveTimeOut,nConnectTimeOut,nSendTimeOut,nReceiveTimeOut )
     if oHttp:Send()
          sleep(5)
          *nStatus1 := oHttp:status()
           cc := oHttp:responseBody
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
 
Beiträge: 1145
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich

Re: Sockets [Erledigt, aber nicht gelöst]

Beitragvon ramses » Mi, 21. Dez 2016 10:23

@Jan

Jan hast du xb2net?

Cu Carlo
ramses
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 347
Registriert: Mi, 28. Jul 2010 16:16

Re: Sockets [Erledigt, aber nicht gelöst]

Beitragvon Jan » Mi, 21. Dez 2016 10:32

Hallo Carlo,

nein. benutze ich nicht.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11449
Registriert: Fr, 23. Sep 2005 17:23
Wohnort: 49328 Melle

Re: Sockets [Erledigt, aber nicht gelöst]

Beitragvon Jan » Mi, 21. Dez 2016 10:36

Hallo Rudolf,

mit den entsprechenden Funktionen von Pablo hatte ich mal vor zwei oder drei Jahren angefangen, weil ich da noch keine Professional Subscription hatte. Das habe ich dann aber sehr schnell wieder aufgegeben. Die Funktionen in diesem Bereich waren mir ganz extrem zu langsam, und eine passende Auftragsprogrammierung durch Pablo ging sehr schleppend voran und wurde dann irgendwann von ihm auch ohne jeden Kommentar nicht weiter geführt. Seither bin ich eher vorsichtig, was den Einsatz von ot4xb angeht. Das läßt sich nicht immer vermeiden, weil in manchen Bereichen Alaska einfach nicht in die Puschen kommt. Aber soweit möglich schmeiße ich das halt raus.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11449
Registriert: Fr, 23. Sep 2005 17:23
Wohnort: 49328 Melle

Re: Sockets [Erledigt, aber nicht gelöst]

Beitragvon Rudolf » Mi, 21. Dez 2016 11:01

Hallo Jan,
ist auch meine Philosophie, stelle jetzt alles auf Chilkat um, aber hatte sonst mit OT4XB nie Probleme mit dem HTTPREQUEST, auch nicht mit Geschwindigkeit.
Grüße
Rudolf
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
 
Beiträge: 1145
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich

Re: Sockets [Erledigt, aber nicht gelöst]

Beitragvon ramses » Mi, 21. Dez 2016 17:17

@Rudolf

du stellst alles auf "Chilkat" um?

Benötigst du dann nicht auch ot4xb in den Wrapper Funktionen?

Bist du mit dem XML-Parser glücklich?

Cu Carlo
ramses
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 347
Registriert: Mi, 28. Jul 2010 16:16

Re: Sockets [Erledigt, aber nicht gelöst]

Beitragvon Rudolf » Do, 22. Dez 2016 9:39

Hallo Carlo,
brauchst kein OT4XB, nur die DLL registrieren und einmal am Anfang die Lizenzfunktion aufrufen. XML Parser funktioniert sehr gut, wie auch alles andere. Hat sehr gute Doku (Beispiele in VFP) und gute Logfunktion bei Problemen. Für ein Tool mit so einem großen Funktionsumfang ein sehr guter Preis finde ich.
Grüße
Rudolf
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
 
Beiträge: 1145
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich

Re: Sockets [Erledigt, aber nicht gelöst]

Beitragvon ramses » Do, 22. Dez 2016 11:36

Hallo Rudolf
du hast recht gute Doku und viele Funktionen. Leider per ActiveX.
ActiveX steht bei uns auf der "Never, ever do that again!" - Liste.....
Gruss
Carlo
ramses
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 347
Registriert: Mi, 28. Jul 2010 16:16

Re: Sockets [Erledigt, aber nicht gelöst]

Beitragvon Rudolf » Do, 22. Dez 2016 12:10

Hallo Carlo,
schade, welche Gründe sind das ? Hatte bis jetzt keine Probleme, auch nicht bei "komplizierten" Kunden und im Hochsicherheitsbereich.
Güße
Rudolf
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
 
Beiträge: 1145
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich

Re: Sockets [Erledigt, aber nicht gelöst]

Beitragvon brandelh » Do, 22. Dez 2016 12:50

Für mich ist ActiveX auch auf der "das mach ich nur im Notfall" Liste ;-)
Registrieren von DLLs auf Zielrechnern, das geb ich mir nicht - insbesondere bei Citrix Servern immer eine Freude mit dem Admin.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13197
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

Re: Sockets [Erledigt, aber nicht gelöst]

Beitragvon Jan » Do, 22. Dez 2016 12:55

Ich habe mich ebenfalls soweit möglich von ActiveX verabschiedet. Zu langsam, manchmal instabil (was nicht immer an Xbase++ liegen muß), ständig Probleme mit Kunden wo sich das nicht installieren ließ, oftmals verwirrende oder fehlende Doku der Schnittstelle auf Seiten der ActiveX-Module - wenn immer möglich verwende ich schon länger alternative Möglichkeiten.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11449
Registriert: Fr, 23. Sep 2005 17:23
Wohnort: 49328 Melle

Re: Sockets [Erledigt, aber nicht gelöst]

Beitragvon AUGE_OHR » Mi, 28. Dez 2016 7:44

ramses hat geschrieben:ActiveX steht bei uns auf der "Never, ever do that again!" - Liste.....
wieso ... wenn man den Code selbst schreibt :)
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
 
Beiträge: 10057
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg


Zurück zu Programmierung allgemein

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast