c# – 从.NET发送HttpWebRequest到php站点时出错
发布时间:2020-12-16 01:47:18 所属栏目:百科 来源:网络整理
导读:尽管尝试了很多东西(见下文),但我无法摆脱“要写入流的字节超过指定的内容长度字节大
尽管尝试了很多东西(见下文),但我无法摆脱“要写入流的字节超过指定的内容长度字节大小”.抛出的错误
writer.Close(); 这是尝试将数据从ASP.NET发布到php站点的代码.只要代码中没有特殊字符,脚本就可以正常工作 – 请注意’W?rld’中的德语变音符号. 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编码的不同变体,例如: request.ContentLength = System.Text.Encoding.UTF8.GetByteCount(data); 和/或 StreamWriter writer = new StreamWriter(request.GetRequestStream(),Encoding.UTF8); 我也尝试在发送之前将数据转换为UTF-8(有点难看): data = System.Text.Encoding.UTF8.GetString(System.Text.Encoding.Convert(System.Text.Encoding.UTF8,System.Text.Encoding.UTF8,System.Text.Encoding.UTF8.GetBytes(data))); 但错误仍然存??在.我的感觉是我没有正确处理UTF-8.非常感谢任何帮助,也有任何提示,我可以找到一个从ASP.NET(服务器端)发布到PHP的完美工作脚本. 解决方法
使用
byte[] bdata = Encoding.UTF8.GetBytes(data); 和 request.ContentLength = bdata.Length; 和 Stream writer = request.GetRequestStream(); writer.Write(bdata,bdata.Length); writer.Close(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |