【问题标题】:GetResponse keeps throwing page not found exceptionGetResponse 不断抛出页面未找到异常
【发布时间】:2015-04-08 14:35:40
【问题描述】:

你能帮帮我吗?我正在尝试获取任何网页的内容。但 GetResponse 不断抛出未找到的异常页面。我感谢您的帮助。以下是我的代码。

try
{
    System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.smallchiptechnologies.com/");
    request.Method = "POST";
    request.ContentType = "text/plain";               
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();

}
catch (WebException ex)
{

}

【问题讨论】:

  • 为什么要使用POST 来获取网页的内容? POST 用于向服务器发送数据,例如表单输入。要获取页面内容,您必须使用 GET
  • 感谢托马斯的回复。我将 POST 更改为 GET 但没有运气。我也做了 Ulugbek 建议的事情,比如添加 contentLength。您认为这可能是网络问题吗?
  • 您得到的确切异常是什么?
  • System.Net.WebException:远程服务器返回错误:(404)未找到。在 System.Net.HttpWebRequest.GetResponse() 在 Translate.TranslateText.Program.Main(String[] args)
  • @Tom 您是否提供了您尝试从中获取数据的实际页面地址?它可以在我的计算机上在浏览器和 c# 代码中完美运行,而不会出现 404。您可以在浏览器中打开您尝试访问的页面吗?

标签: c# visual-studio-2013 webpage web-access


【解决方案1】:

首先,它看起来应该是GET 响应,而不是POST(因为您只是试图从服务器获取数据而不发布任何表单数据或类似的东西)所以将request.Method = "POST"; 更改为request.Method = "GET";

其次,您没有从响应流中读取任何内容。在您的代码中添加类似这样的内容以获取页面内容:

string text;
using (var reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
    text =  reader.ReadToEnd();
}

【讨论】:

  • 谢谢安迪,实际上我没有对响应添加任何进一步的处理,因为它始终为空。我想先解决这个问题,然后再做
【解决方案2】:

您是否放弃了潜在的代理问题?例如,如果您在公司网络代理后面运行该代码,则需要稍微修改您的代码以支持通过该代理的连接。

这样的……

webrequest.Proxy = new WebProxy(ProxyServer,ProxyPort);

更多详情在这里:https://msdn.microsoft.com/en-us/library/czdt10d3(v=vs.110).aspx

【讨论】:

  • 感谢 javierglozano 的回复。其实我没有任何代理。
猜你喜欢
  • 1970-01-01
  • 2014-05-20
  • 2014-04-12
  • 1970-01-01
  • 1970-01-01
  • 2021-01-08
  • 2012-02-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多