【发布时间】:2011-02-10 15:54:17
【问题描述】:
我有一个 C#.net 网络表单,它以内容类型 JSON 格式执行简单的 response.write。它适用于我测试它的每个客户端 - 包括来自 Android 手机的 TinyWebDB API 调用。但不要担心这个问题的 API。
我在该 Web 表单中添加了一些服务器端代码来读取和抓取网页,如下所示。
System.Net.WebClient myWebClient = new System.Net.WebClient();
Stream myStream = myWebClient.OpenRead(what);
StreamReader sr = new StreamReader(myStream);
string s = sr.ReadToEnd();
我的印象是代码都是服务器端的!?
我从 IE、FF 和 Chrome 测试了该页面.. 一切都很好。但是,如果我尝试从 TinyWebDB 调用 Web 表单页面,调用效果很好,我可以取回数据,但是在服务器端读取网页时出现 404 错误??
就好像 System.Net.WebClient 需要客户端本身的某些东西或正在客户端本身做一些事情。我认为页面的阅读都发生在服务器端和我的服务器的幕后。为什么我的服务器端代码会关心哪个浏览器或 API 发起了对网络表单的调用?
我应该使用其他课程吗?
非常感谢。
【问题讨论】:
-
它不可能在客户端“做某事”:代码在服务器上。你错了,问题出在别的地方
-
需要更多信息。是否有某些东西(可能是查询字符串变量或 Web 方法)来确定是否调用了此代码?由于它在服务器端运行,因此如果服务器相同但客户端不同,则只有这样的实现细节可能会导致不同的行为。
-
我也会这么认为。我隔离了所有内容并将上面的代码包装在 try/catch 中,将其结果返回给 API。从所有客户端中,我看到页面的输出读取了 tinyWebDB API 调用.. 得到的信息返回说远程服务器返回错误:(404)未找到。我还看到它尝试处理的内容与所有其他客户端匹配。
-
这才是真正奇怪的地方。该解决方案在我调用某些页面时有效,但如果我尝试调用 yahoo 或 google 主页,我会得到 404 ???
标签: c# asp.net server-side scrape