webForumDet fria alternativet

URL Encode vid post?

.NET

4 svar · 1 979 visningar · startad av l-boy

Medlem sedan juli 2003221 inlägg
Frågan#1

Jag har en sträng som ser ut såhär:

string postData = "action=newArticle&articleNo=1&articleName=MinArtikel"

Strängen postas till en annan sida m.h.a följande:


WebClient myWebClient = new WebClient();
myWebClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
byte[] byteArray = Encoding.Default.GetBytes(postData);
byte[] responseArray = myWebClient.UploadData(postURL, "POST", byteArray);
Response.Write(Encoding.Default.GetString(responseArray));

Det funkar galant. Tills dess att postData innehåller t.ex "&"-tecken eller mellanslag. (Mellanslagen försvinner. Att &-tecknet vållar problem förstår jag också varför)

Fick tipset att URLEncode skulle lösa mina problem och la därför till

postData = HttpUtility.UrlEncode(postData);

Men det löste inget. Tips på vad som bör göras?

Medlem sedan maj 2001431 inlägg
#2

Kan det vara så att din sida är i utf-8 och du behöver ange det då du bygger din array?

byte[] byteArray = Encoding.UTF8.GetBytes(postData);
Medlem sedan juli 2003221 inlägg
#3

Sidan använder ISO-8859-1.

Har fått ordning på &-tecken och mellanslag genom att köra HttpUtility.UrlEncode på både namn och värde för sig i post-strängen.

Nu blir dock ÅÄÖ tokiga.


WebClient myWebClient = new WebClient();
myWebClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
myWebClient.Encoding = Encoding.Default;
byte[] byteArray = Encoding.Default.GetBytes(postData);
byte[] responseArray = myWebClient.UploadData(postURL, "POST", byteArray);

i web.config:
<globalization fileEncoding="ISO-8859-1" requestEncoding="ISO-8859-1" responseEncoding="ISO-8859-1" culture="sv-SE" />
Medlem sedan juli 2003221 inlägg
#4

Alltså:

Postar jag in : "ÅÄÖ &" får jag rätt svenska tecken - "&" och " " blir tokiga.
Postar jag in : HttpUtility.UrlEncode("ÅÄÖ &") får jag rätt på "&" och " " medans ÅÄÖ blir tokiga.

Har ingen lust att behöva välja... ;)

Medlem sedan juli 2003221 inlägg
#5

Löste sig med HttpUtility.UrlEncodeUnicode.

266 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)