Encoding Problem?

Hoi Zusammen,

ich bruchte mal wieder eine Hilfestellung :frowning: - Ich bekomme in meinem Programm per HTTP folgenden Input gesendet:

[code]POST /flash/addcrypted2 HTTP/1.1
Host: 127.0.0.1:9666
Connection: keep-alive
Content-Length: 428
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
Origin: http://www.google.de
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 YaBrowser/14.12.2125.10034 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://www.google.de
Accept-Encoding: gzip,deflate
Accept-Language: de,en;q=0.8

source=http://www.google.de&crypted=P8bFE38ECLf5zIf8fhIlgtCaWsNxefsMN+bF6QRho9BaKCOi66nggCTV02MiTzmPID4cGO3fYtDvIJ3PfS5nSD8hOxfam+UDKG1RnalwDnI=&jk=function+f(){+var+org+=+‘43638343731333932373838373635393’;+var+dec+=+’’;+var+i+=+0;+for(i=32;i>=0;i–){+dec+=org.substring(i,i+1);+}+return+dec;+}&x=34&y=38[/code]

Wie man sieht enthlt dieser Input eine JavaScript Funktion, die ich ausfhren muss. Allerdings kommt es vor das manche Inhalte mit diesen + Zeichen kommen, was irgendwie am Encoding liegen muss. So ist die JS-Funktion nmlich falsch


Hat jemand eine Idee was ich da falsch mache?

decode URL component. Aber schon komisch eine Funktion in der URL?

DecodeURLComponent habe ich auch schon drĂŒber gejagt, es bleiben aber die + Zeichen da. Das ist insofern interessant das ich mit einem Kollegen in Kontakt stehe, der das ganze in C# fĂŒr Windows umsetzt, da kommt die Funktion immer richtig an. Deswegen gehe ich davon aus das irgendwas falsch lĂ€uft mit dem Encoding.

Kann man denn festellen in was fĂŒr einem Encoding die Daten daher kommen? Vielleicht senden die Webseiten ja unterschiedlich.

Diese Funktion generiert nachher einen SchlĂŒssel mit dem man cryped auslesen kann, das ist das Click’n’Load Protokoll das ich gerade in Xojo nachbaue.

Also scheinbar hat UrlDecodeComponent ein Decoding Problem


in VB sieht das ganze nachdem UrlDecode so aus:

[code]Vor dem UrlDecode:
source=http%3A%2F%2Ftest.de%2Fview.php%3Fid% 3De9782fe84ca2c47b3d4c0b0a88acb4&crypted=X0ZrQ%2Bc Hn4lJSRE5N1h7yCC1w64PhdDN10uN5cLPTyJeZEsfF3yn9jH1O 2ZGVs03XIKeAQxeEhztBZe90k9i5AUx%2BpygLbDtNNibdKty6 2c%3D&jk=function+f%28%29%7B+var+org+%3D+%27532383 63139393333323630313038333%27%3B+var+dec+%3D+%27%2 7%3B+var+i+%3D+0%3B+for%28i%3D32%3Bi%3E%3D0%3Bi–%29%7B+dec%2B%3Dorg.substring%28i%2Ci%2B1%29%3B+%7 D+return+dec%3B+%7D&x=46&y=43

Vor nach dem UrlDecode:
source=http://www.test.de/view.php?id=e9782fe84ca2c47b3d4c0b0a88acb4&crypted =X0ZrQ+cHn4lJSRE5N1h7yCC1w64PhdDN10uN5cLPTyJeZEsfF 3yn9jH1O2ZGVs03XIKeAQxeEhztBZe90k9i5AUx+pygLbDtNNi bdKty62c=&jk=function f(){ var org = ‘53238363139393333323630313038333’; var dec = ‘’; var i = 0; for(i=32;i>=0;i–){ dec+=org.substring(i,i+1); } return dec; }&x=36&y=29[/code]

Ich frage mich nun wie ich da weiter vorgehen soll


@Christian Schmitz
GET/POST sind als “application/x-www-form-urlencoded” und benutzen “+” als Leerzeichen statt %20. Tjoa und das Problem ist nun das DecodeURLComponent scheinbar damit nicht umgehen kann, in VB funktioniert das wohl Problemlos. Das dumme ist nun das ich nicht einfach + mit " " ersetzen kann, da diese Java-Funktionen halt eben auch ein + enthalten können


Problem ist gelöst, UrlDecodeComponent macht nicht ganz was man davon erwartet. Gelöst durch eine andere Funktion


[code] Protected Function URLDecode(s as String) As String
Dim TempAns As String
Dim CurChr As Integer

CurChr = 1

Do Until CurChr - 1 = Len(s)
Select Case Mid(s, CurChr, 1)
Case “+”
TempAns = TempAns + " "
Case “%”
TempAns = TempAns + Chr(Val("&h" + Mid(s, CurChr + 1, 2)))
CurChr = CurChr + 2
Case Else
TempAns = TempAns + Mid(s, CurChr, 1)
End Select

CurChr = CurChr + 1

Loop

return TempAns
End Function
[/code]