Witam,
do strumienia dla obiektu HTTPWebRequest request wczytuje content,
który jest uformowanym przeze mnie odpowiednim stringiem
z ciągiem param=value. Niektóre wartości parametrów mogą zawierać
znaki z języka polskiego lub niemieckiego, dlatego chcę ten content
zakodować w UTF-8 a nie ASCII. Gdy koduje w ASCII (przypadek 1.)
wszystko jest OK, jak tylko chce kodowac w UTF-8 (przypadek 2.) to rzucany jest wyjątek
typu ProtocolViolationException:
"Bytes to be written to the stream exceed the Content-Length bytes size specified."
KOD:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URI);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
string contentUTF8 = "zawartość HTTPmessage";
request.ContentLength = contentUTF8.Length;
-
przypadek
StreamWriter stOut = new StreamWriter(request.GetRequestStream(), Encoding.ASCII);
stOut.Write(contentUTF8);
stOut.Flush();
stOut.Close(); -
przypadek
StreamWriter stOut = new StreamWriter(request.GetRequestStream(), Encoding.UTF8);
stOut.Write(contentUTF8);
stOut.Flush() <- rzucany wyjątek ProtocolViolationException
stOut.Close();
Macie pojęcie, o co może chodzić?