Entwickler-Ecke

ASP.NET und Web - C# Html Post auf php


ebber - Do 23.06.11 21:20
Titel: C# Html Post auf php
Hallo,

ich habe ein kleines Problem, ich bin mir nur nicht sicher ob es an C#, oder php liegt, oder ob es überhaupt funktioniert.

Ich wollte aus einem C# Programm per Post Daten zu einer php Seite bringen. Die Daten bzw der string enthält aber auch ein paar Sonderzeichen wie &+...

durch:

C#-Quelltext
1:
request.ContentType = "application/x-www-form-urlencoded";                    

scheint mir das mit den Sonderzeichen allerdings nicht zu gehen?

Kann ich einen Post auch anders encoden? mit z.B. text/html; charset=utf-8?

Ich habe das versucht, allerdings kam dann nicht mehr im php an. Ich habe nur ein "OK" im C# Programm zurückbekommen.

Noch der Code:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
            WebRequest request = WebRequest.Create("http://hhh");

            request.Method = "POST";
            string postData = "er=" + textBox1.Text + "&es=" + "+&=""");
            byte[] byteArray = Encoding.Default.GetBytes(postData);
            System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
            request.ContentType = "text/html; charset=utf-8";
            request.ContentLength = byteArray.Length;


MfG


Christian S. - Do 23.06.11 21:44

Hallo!

Also erst einmal: Wenn Du sagst, die Daten wären url-encoded, musst Du sie natürlich auch url-encoden, da gibt es IIRC eine fertige Methode für. Einfach mal googlen: Suche bei Google "C# URLENCODE"

Genau dasselbe beim Codeschnipsel: Wenn Du Daten als UTF-8 ankündigst, musst Du sie auch als UTF8 kodieren - und nicht die Default-Kodierung benutzen!

Grüße,
Christian


ebber - Do 23.06.11 22:03

Macht Sinn. Ich hatte da auch ein bisschen mit rumgespielt. Hat aber damals schon nichts geändert und jetzt beim gezielten probieren irgendwie auch nicht )-:


ebber - Fr 24.06.11 19:08

Ich glaube ich stand vorhin ein wenig auf de Schlauch. Du hast mir natürlich die Lösung verraten :) Danke

Mit der Urlencode Funktion von C# werden alle Sonderzeichen in %xx html Zeichen gewandelt, welche keine Probleme in Urls bereiten.

Bei Base64 strings machen nur + und / Probleme, die man leicht durch - und _ ersetzen kann, und später eben wieder zurück.

MfG