我正在使用控制台应用程序与第三方网站进行通信。为了确定表单提交是否成功完成,我想查询响应消息以确定提交按钮是否仍在页面上。
Fiddler中的响应标题如下所示:
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Vary: Accept-Encoding
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Fri, 08 May 2015 19:31:34 GMT
Content-Length: 93993
我的代码如下所示:
var enc = Encoding.UTF8;
using (Stream responseStream = responseMessage.Content.ReadAsStreamAsync().Result)
{
using (var rd = new StreamReader(responseStream, enc))
{
var stringContent = rd.ReadToEnd();
if (!stringContent.Contains("submitButtonTag"))
result = true;
}
}
但是当我在Visual Studio中查看返回的字符串时,字符看起来像这样:
�\b\0\0\0\0\0\0�\a`I�%&/m�{J�J��t�\b�`$ؐ@������iG#)�*��eVe]f@�흼��{���
我会一直跑到提交页面看看会发生什么,但我可以提交的测试表格数量有限。这只是Visual Studio呈现这些的方式吗?有没有办法可以让这个回复成为我可以比较的可读字符?
答案 0 :(得分:1)
在@JoeEnos的评论之后,我能够在阅读流之前简单地添加GZip解压缩。代码如下。
var enc = Encoding.UTF8;
using (Stream responseStream = responseMessage.Content.ReadAsStreamAsync().Result)
{
using (var decompressedStream = new GZipStream(responseStream, CompressionMode.Decompress))
{
using (var rd = new StreamReader(decompressedStream, enc))
{
var stringContent = rd.ReadToEnd();
if (!stringContent.Contains("submitButtonTag"))
result = true;
}
}
}