【问题标题】:HttpWebRequest with GET: 401 unauthorized带有 GET 的 HttpWebRequest:401 未经授权
【发布时间】:2011-08-01 09:31:05
【问题描述】:

我发现 httpWebRequest 存在一些问题,我在其他论坛上阅读了所有相同的问题,但答案似乎不起作用。我的代码:

HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse resp;
wr.ContentType = "text/html; charset=UTF-8"; 
wr.Method = "GET";
wr.Credentials = new NetworkCredential("user", "password");
resp = (HttpWebResponse)wr.GetResponse();

远程服务器返回错误:(401) Unauthorized. 响应说 cookie 中没有身份验证令牌。我可以使用我的身份验证请求和 POST 方法接收这个令牌。我什至尝试通过"new Cookie ("authToken",token_value)". 将其放入CookieContainer,但结果是一样的-error 401。有人知道解决办法吗?

谢谢。

我使用 Zimbra 网络服务器,可以控制它。 .NET 4.0。我的 url 是我需要下载的 .eml 文件的路径。要指定文件,我需要添加一些 GET 参数:id 和 part。所以整个地址看起来像http://someserver.info/service/content/get?id=1&part=1

【问题讨论】:

  • 能否说出以下几点: 1. 您请求的站点的 URL 是什么? 2. 您使用的是什么版本的 .NET?(可能不合适) 3. 您使用的 Web 服务器是什么? 4. 您能否控制您尝试连接的 Web 服务器并应用必要的安全权限?谢谢。
  • 我使用 Zimbra 网络服务器,有权控制它。 .NET 4.0。我的 url 是我需要下载的 .eml 文件的路径。要指定文件,我需要添加一些 GET 参数:id 和 part。所以整个地址看起来像someserver.info/service/content/get?id=1&part=1
  • 您是否尝试过:(如果可能的话)将 Web 服务器与基本的 Web 浏览器连接,并使用 fiddler(fiddler2.com/fiddler2) 之类的工具调试正在发生的事情??
  • 可能是您忘记添加一个简单的 webrequest 标头,例如 Cache-Control: no-cache Authorization: Basic "..." 或类似的东西。
  • @Alexander B - 你应该把你的解决方案作为一个答案然后接受它,这样这个 q 就会显示为已完成,并且以后遇到同样问题的人也可以

标签: c# email networking soap httpwebrequest


【解决方案1】:

(由 OP 在 cmets 和问题编辑中回答。移至此处。见 Question with no answers, but issue solved in the comments (or extended in chat)

OP 写道:

Zimbra 中的授权令牌称为 ZM_AUTH_TOKEN,因此您需要将您的 authtoken 放入 cookie 中,如下所示:

wr.CookieContainer = new CookieContainer();
wr.CookieContainer.Add(new Uri(url), new Cookie("ZM_AUTH_TOKEN", rc.AuthToken));

然后你不需要放 auth 头,请求会工作

【讨论】:

    猜你喜欢
    • 2012-12-20
    • 1970-01-01
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2016-11-08
    • 1970-01-01
    • 2018-08-30
    相关资源
    最近更新 更多