webForumDet fria alternativet

URL Encode vid post?

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

l-boyMedlem sedan juli 2003223 inlägg
#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?

HermanMedlem sedan maj 2001427 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);
l-boyMedlem sedan juli 2003223 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" />
l-boyMedlem sedan juli 2003223 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... ;)

l-boyMedlem sedan juli 2003223 inlägg
#5

Löste sig med HttpUtility.UrlEncodeUnicode.

Genererad på 387 ms · cache AV · v20260730165559-full.f96bc7eb