首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Webresponse/Webrequest不工作

Webresponse/Webrequest不工作
EN

Stack Overflow用户
提问于 2012-02-11 08:14:53
回答 2查看 1.6K关注 0票数 0

我的程序使用WebRequestWebResponse,以便在迭代中从给定的URL下载一个HTML。例如,URL字符串将类似于

http://www.aaaa.com/cccc=varB

其中,varB对于循环中的每个迭代都是不同的字符串。

当它将文件下载到流中后,它将搜索该流中特定的文本字符串,并将它们存储到单独的文本文件中。但是,我发现在一些迭代中,它似乎没有读取任何内容(当我在地址栏中键入URL字符串时,它的URL字符串是有效的,所以它不是一个无效的URL)。

我将流和WebResponse对象放在using块中,我也有一个try…catch块,但没有出现异常。在循环中使用WebRequestWebResponse有问题吗?

代码语言:javascript
复制
try
{
    foreach (string name in names)
    {
        string urlstr = "…"; // URL format like I mentioned earlier

        HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(urlstr);
        myRequest.Timeout = 30000;

        //store the response in myResponse 
        using (HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse())
        {
            //register I/O stream associated with myResponse
            using (Stream myStream = myResponse.GetResponseStream())
            {
                //create StreamReader that reads characters one at a time
                using (StreamReader myReader = new StreamReader(myStream))
                {
                    myReader.ReadLine();
                    sw.WriteLine(name + " " + myReader.ReadLine());
                }
            }
        }
    }

    sw.Close();
}

结果将类似于以下内容:

代码语言:javascript
复制
name1 stuffReadfromfile
name2 stuffReadfromfile
name3 stuffReadfromfile
name4                        
name5 stuffReadfromfile
name6 
name7 stuffReadfromfile
name8 stuffReadfromfile
name9 
name10 stuffReadfromfile

即使在每个名称之后都应该有stuffReadfromfile

EN

回答 2

Stack Overflow用户

发布于 2012-02-11 10:37:08

这里有两件事:

首先:尝试读取字符串中的整个响应,然后使用ReadToEnd()处理字符串:

代码语言:javascript
复制
//create StreamReader that reads characters one at a time
using (StreamReader myReader = new StreamReader(myStream))
{
    string content = myReader.ReadToEnd();
    // Process content
}

第二件事:尝试设置request.CachePolicy,以便始终确保从服务器获得最新内容。

我同意上面关于在你做任何内容之前检查状态代码的评论。

希望这有帮助

票数 1
EN

Stack Overflow用户

发布于 2012-02-11 09:03:35

我会使用像Fiddler这样的工具来知道实际发生了什么--您所期望的数据是否从服务器返回。顺便说一下,为什么您要两次调用ReadLine() --在某些情况下,第一个调用不能吞咽数据?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9238790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档