WebResponse 403错误是否有其他解决方案
本文关键字:其他 解决方案 是否 错误 WebResponse | 更新日期: 2023-09-27 18:29:11
有很多关于WebResponse 403错误的帖子,但我的情况有点不同。我已经创建了一个控制台应用程序,它将作为任务在我的服务器上运行。控制台应用程序在WebRequest中传递用户电子邮件,并等待WebResponse接收带有返回参数的uri。下面的代码几天前运行得很好,但其他一位程序员为返回的网址添加了一个新参数。我知道这是导致403错误的原因,因为如果我在IE中粘贴带有新参数的uri,它就会起作用。但由于我有一个控制台应用程序,返回网址是我不能做的事情,至少我不这么认为
不幸的是,程序员说他不能把它改回来,并说有一种方法可以接收uri或整个页面内容,我可以用这种方式处理它。我仍然不知道他在说什么,因为StreamReader需要WebResponse和我能想到的几乎所有其他解决方案。
即使我得到了一个403错误,响应仍然有我需要的参数的uri,因为我可以在网址的IE中看到它。所以我只需要响应uri。如果你能提供任何帮助,我将不胜感激。下面是给我出问题的方法。
String employeeInfo = "";
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest
.Create("http://example.com/subsub.aspx?instprod=xxx&vabid=emailaddress");
using (HttpWebResponse webResponse =
(HttpWebResponse)request.GetResponse()) //Error occurs here. 403 Forbidden
{
Uri myUri = new Uri(webResponse.ResponseUri.ToString());
String queryParamerter = myUri.Query;
employeeInfo = HttpUtility.ParseQueryString(queryParamerter).Get("vres");
if (employeeInfo != "N/A")
{
return employeeInfo;
}
else
{
employeeInfo = "0";
return employeeInfo;
}
}
}
catch (WebException)
{
employeeInfo = "0";
return employeeInfo;
}
让我们遵循Jim Mischel的想法。我们将处理WebException并使用该异常的Response属性。
String employeeInfo = "";
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://example.com/subsub.aspx?instprod=xxx&vabid=emailaddress");
using (HttpWebResponse webResponse = (HttpWebResponse)request.GetResponse()) //Error occurs here. 403 Forbidden
{
Uri myUri = new Uri(webResponse.ResponseUri.ToString());
String queryParamerter = myUri.Query;
employeeInfo = HttpUtility.ParseQueryString(queryParamerter).Get("vres");
if (employeeInfo != "N/A")
{
return employeeInfo;
}
else
{
employeeInfo = "0";
return employeeInfo;
}
}
}
catch (WebException ex)
{
HttpWebResponse response = ex.Response as HttpWebResponse;
if(response.StatusCode != HttpStatusCode.Forbidden)
{
throw;
}
Uri myUri = new Uri(response.ResponseUri.ToString());
String queryParamerter = myUri.Query;
employeeInfo = HttpUtility.ParseQueryString(queryParamerter).Get("vres");
if (employeeInfo != "N/A")
{
return employeeInfo;
}
else
{
employeeInfo = "0";
return employeeInfo;
}
}