2011-09-12 8 views
3

多くのことを試しても(下記参照)、"ストリームに書き込まれるバイトが指定されたContent-Lengthバイトサイズを超えています。.NETからPHPサイトにHttpWebRequestを送信する際のエラー

writer.Close(); 

これにスローされますエラーがPHPのサイトにASP.NETからデータをポストしようとするコードです。 のコードに特殊文字がない限り、スクリプトは正常に動作します。ドイツ語のUmlautは「Wörld」になっています。私も前に、UTF-8にデータを変換することを試みた

request.ContentLength = System.Text.Encoding.UTF8.GetByteCount(data); 

及び/又は

StreamWriter writer = new StreamWriter(request.GetRequestStream(), Encoding.UTF8); 

Uri uri = new Uri("http://mydomain/test.php"); 
string data = @"data=Hello Wörld"; 

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri); 
request.Method = WebRequestMethods.Http.Post; 
request.ContentLength = data.Length; 
request.ContentType = "application/x-www-form-urlencoded"; 
StreamWriter writer = new StreamWriter(request.GetRequestStream()); 
writer.Write(data); 
writer.Close(); 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
StreamReader reader = new StreamReader(response.GetResponseStream()); 
string tmp = reader.ReadToEnd(); 
response.Close(); 
Response.Write(tmp); 

私は次のように、UTF-8エンコーディングを使用して異なるバリエーションを試みましたそれを送信(多少醜い):

まだエラーが残っています。私の気持ちは、UTF-8の処理権が得られないということです。任意の助けは、私はASP.NET(サーバー側)からPHPに投稿する完全に動作するスクリプトを見つけることができる任意のヒントも大いに感謝しています。

答えて

7

使用

byte[] bdata = Encoding.UTF8.GetBytes(data); 

request.ContentLength = bdata.Length; 

Stream writer = request.GetRequestStream(); 
writer.Write(bdata, 0, bdata.Length); 
writer.Close(); 
+0

時々私は本当に私はちょうどupvoteと受け入れ答えよりも多くを与えることがしたいです。素早く答えてくれてありがとう、魅力のように働き、私の一日を救った! – Olaf

+0

あなたは歓迎です:-) – Yahia

関連する問題