HttpWebRequest与从javascript动态生成html的页面?

时间:2011-04-21 06:41:42

标签: c# httpwebrequest webclient

这是一个两部分问题。是否可以通过使用WebClient / HttpWebRequest从通过javascript动态加载内容的页面中检索数据?

我还想如何使用WebClient / HttpWebRequest来复制XMLHttpRequest,就像通过javascript执行一样。

编辑: 我捕获了我试图复制的请求的标题,如下所示: http://www.tagged.com/api/?application_id=user&format=json&session_token=6thk20fhv7d727emgdhfka6034

POST / api /?application_id = user& format = json& session_token = 6thk20fhv7d727emgdhfka6034 HTTP / 1.1 主持人:www.tagged.com

接受:text / html,application / xhtml + xml,application / xml; q = 0.9, / ; q = 0.8 Accept-Language:en-us,en; q = 0.5

Accept-Encoding:gzip,deflate

Accept-Charset:ISO-8859-1,utf-8; q = 0.7,*; q = 0.7

X-Requested-With:XMLHttpRequest

Content-Type:application / x-www-form-urlencoded;字符集= UTF-8

内容长度:88

connect_status = -1; __utmb = 50703532.0.10.1303366930

DNT:1

连接:保持活力

Pragma:no-cache

缓存控制:无缓存

方法= tagged.usermgmt.addFriend&安培; uid_to_add = 5402501977&安培; api_signature =安培;轨道= 1mJ0lY7-W3

直到这个方法,我才明白一切。据我所知,你只能向HttpWebRequest.Method提供GET或POST。有人可能会为我填补空白吗?

2 个答案:

答案 0 :(得分:2)

  

是否可以通过使用WebClient / HttpWebRequest从通过javascript动态加载内容的页面中检索数据?

不 - 您可以检索执行 JavaScript所需的所有JavaScript文件和其他文档,但HttpWebRequest类不会为您执行该JavaScript - 这完全是一个更复杂的任务。

如果您想这样做,那么您可以在应用程序中托管Web浏览器,让浏览器打开并“呈现”页面,然后检查结果。一般而言,根据具体情况提出替代解决方案要容易得多,例如,如果JavaScript从AJAX请求填充页面,那么就直接自己运行请求。

  

我是否可以使用WebClient / HttpWebRequest来复制XMLHttpRequest,就像你会看到通过javascript执行一样?

如果您的意思是“我可以使用HttpWebRequest执行类似于客户端JavaScript执行的AJAX请求的HTTP请求”,那么答案是肯定的,但是如何执行此操作将取决于JavaScript和参数用来执行AJAX请求。

在这种情况下,Web调试工具(例如Fiddler)非常有用,因为它允许您检查和比较正在进行的请求。

答案 1 :(得分:2)

如果您尝试以与javascript相同的方式与服务器通信,则可能有一些选项。

首先,您必须确定这些页面与服务器的通信方式。例如,JSON或SOAP。您可以使用wireshark等网络嗅探器执行此操作。

完成此操作后,您可以使用一个可用的C#JSON解析器(例如JSON.NET)使用和解析JSON响应,将您自己的JSON请求发送到该服务器。

对于SOAP,您可以使用类似的方法。请注意,他们可能不喜欢你这样说他们的API。