将字符串放入文本框 - >不完整



我点击了一个小的WinForms应用程序进行测试。它有两个多行文本框和一个按钮,按下后向服务器发送请求,并将响应头和内容发送到文本框中,如下所示:

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
int len = 0;
foreach (var header in response.Headers)
{
    var str = header.ToString();
    textBox1.AppendText(str + "=" + response.Headers[str] + "n");
    if (str == "Content-Length") len = Convert.ToInt32(response.Headers[str]);
}
Stream respStream = response.GetResponseStream();
byte[] x = new byte[len];
respStream.Read(x, 0, len);
var s = new string(ascii.GetChars(x, 0, len));
// textBox2.Text = s;
textBox2.Clear();
textBox2.AppendText(s);
MessageBox.Show(textBox2.TextLength.ToString(), s.Length.ToString());

但是无论我是否使用AppendText或是否分配字符串,MessageBox总是显示标题7653与消息3964,并且标题文本框包含行Content-length=7653

所以似乎字符串没有完全附加到TextBox。为什么会这样?

Btw:我正在请求一个HTML文档;显示的最后两个字符是"。

查看这篇文章

你的问题是流。您可能会读取少于总字符数的字符,因为它们可能在网络上还不可用。

所以你的字符串已经只包含了文本的第一部分。s.Length表示从字节数组x复制过来的正确字符数,但大多数字符都是0 (Char '')。textBox2。然后TextLength指示已读取的正确字符数。我想它会修剪''字符。

应该使用while循环,并按照前面的指示检查Read的结果。

还要检查html页面的编码。对于UTF8 (HTML 5的默认值),一个字节不一定对应一个字符。

相关内容

  • 没有找到相关文章

最新更新