2

我正在使用 ASP.NET 读取 Request.InputStream 并将 HttpRequest 发送到发送给我的页面抛出 QueryString 参数,我正确读取了 Request.InputStream 并且我正确地制作了 HttpRequest,但是在我的 Request.InputStream我发现像“Porsvägen”这样的特殊字符我得到这个错误:ystem.Net.WebException:请求被中止:请求被取消。---> System.IO.IOException:在写入所有字节之前无法关闭流。在 System.Net.ConnectStream.CloseInternal(布尔内部调用,布尔中止)

我获取 Request.InputStream 的代码是这样的:

string requestData = (new StreamReader(Request.InputStream)).ReadToEnd();

我制作和发送 HttpRequest 的代码是这样的:

    webRequest = (HttpWebRequest)WebRequest.Create(new Uri(urlDestination));
    webRequest.Method = "POST";

    webRequest.ContentType = "application/x-www-form-urlencoded";
    webRequest.ContentLength = requestData.Length;

    writer = new StreamWriter(webRequest.GetRequestStream());
    writer.Write(requestData, 0, requestData.Length);//<-------Here I get the ERROR
    if (writer != null)
    {
        writer.Close();
    }

你能告诉我我的代码有什么问题吗,因为它可以工作,但是对于特殊字符它会崩溃。

4

1 回答 1

7

我已经设法通过实现这个来克服错误:

        string requestData = (new StreamReader(Request.InputStream)).ReadToEnd();
        byte[] bytes = Request.ContentEncoding.GetBytes(requestData);

        Stream writer = webRequest.GetRequestStream();
        writer.Write(bytes, 0, bytes.Length);

我使用 Stream 来编写HttpWebRequest代替并使用 in 字节StreamWriter读取InputStreamContentEncoding

于 2013-01-24T12:24:26.753 回答