Forum: Mikrocontroller und Digitale Elektronik Lantronix XPort macht aus "&" ein "&amp"


von norticum (Gast)


Lesenswert?

Hallo,

ich hab es jetzt endlich nach längerem herumprobieren geschafft den 
XPort-05R dazu zu bewegen sich mit einen Webserver zu verbinden.

klappte mit:

C192.168.1.6:80

danach habe ich folgende URL über RS232 übergeben:

GET Host: http://192.168.1.6/cgi-bin/npcgi?msg=Test&no=669&bp=3 
HTTP/1.1\r\n

in der Antwort stand folgendes:

Your browser sent a request that this server could not 
understand.<p><pre>GET Ho
st: http://192.168.1.6/cgi-bin/npcgi?msg=Test&amp;no=669&amp;bp=3 
HTTP/1.1

Hat jemand eine Idee was ich machen muss damit der XPort mein gesendetes 
"&" so belässt und nicht "&amp;" daraus macht?

Gebe ich das in einen normalen Browser so ein dann sehe ich im Wireshark 
eine korrekte Anfrage mit korrekter Zeichenübergabe.

Vielleicht hat von euch Spezis eine Idee...


Grüße,
norticum

von Ulrich F. (Gast)


Lesenswert?

Nunja...
KA, was C192.168.1.6:80 bedeuten soll....
KA, was du da tust....

Aber Der Vorgang & zu &amp; ist mir gut bekannt.
In PHP wird dieses mit htmlentities() erreicht. Und das ist durchaus 
berechtigt, wenn man die URLs in HTML Dokumenten unterbringt.

von norticum (Gast)


Lesenswert?

Hallo,

es geht nur um den GET Request der URL.

mit C192.168.1.6:80 connecte ich mich am Webserver.

Ich habe einen Lantronix XPort und sende die URL über die RS232. Der 
XPort macht dann den GET Request daraus. Leider macht der auch aus 
meinem über die RS232 gesendeten "&" Zeichen ein "$amp;" das der 
Webserver nicht versteht. Auf den Webserver habe ich keinen Einfluss 
sonst hätte ich das ja auch im Webserver ändern können.

Die Frage ist was ich machen/ändern muss damit der XPort mein "&" 
Zeichen nicht verdreht.....

Grüße,

norticum

von Bastler (Gast)


Lesenswert?

Das Teil "HTML escape"-encodiert die URL. Damit werden 
HTML-Sonderzeichen in Texten übertragen.
Eigentlich sollte er "URI escape" encodieren. Dabei werden in der URL 
Sonderzeichen durch % und zweistelligen Hexwert ersetzt, z.B. 
Leerzeichen durch %20.
Noch eigentlicher sollte er die URL-Syntax garnicht verändern.

von Bastler (Gast)


Lesenswert?

Und Doku + FAQ schweigen sich (nach 2 min Recherche) über diesen Umstand 
aus.

von foo (Gast)


Lesenswert?

norticum schrieb:
> Your browser sent a request that this server could not
> understand.<p><pre>GET Ho
> st: http://192.168.1.6/cgi-bin/npcgi?msg=Test&amp;no=669&amp;bp=3
> HTTP/1.1

Das ist nur so, weil die übergebene URL eben in einer HTML-Seite als 
Fehlermeldung dargestellt wird. Und da man in HTML mit & Entities 
einleitet, muss ein & als Zeichen eben als &amp; kodiert werden. Es ist 
wirklich nur für die Anzeige. Der Server kodiert nix um.

Ich glaube eher, dass dein Problem in "GET Host: 
http://192.168.1.6/blafoo <newline> HTTP/1.1" liegt, so sieht ein 
HTTP-Request nämlich nicht aus und deshalb wirft er "could not 
understand". Eher "GET /blafoo HTTP/1.1 <newline> Host: 192.168.1.6 
<newline><newline>".

("GET http://..."; wird nur verwendet wenn du dich zu einem Proxy 
verbindest, aber auch dann steht kein "Host:" zwischen GET und der 
Adresse.)

von norticum (Gast)


Lesenswert?

Auf %26 HEX und %38 Dezimal wäre ich auch schon gekommen.... das 
versteht aber der Webserver wieder nicht. Es ist ein Cherokee Webserver 
Version 1.2.1.....

von norticum (Gast)


Lesenswert?

@foo

Ein riesiges FETTES Danke ganz besonders an Dich!!! Natürlich auch an 
Bastler und Ulrich F.

Es klappt!!!

Also nochmal zusammen gefasst:

Mit C192.168.1.6:80 connecten, es kommt ein "C" für connected zurück

dann den GET Request wie nachfolgend dargestellt übermitteln:


GET /cgi-bin/npcgi?&msg=Test&no=669&bp=3 HTTP/1.1\r\nHost: 
192.168.1.6\r\n\r\n

Kaum macht mann es richtig funktioniert es auch :-)

Danke nochmal!!!

Grüße,

norticum

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.