WebClient 使用凭据访问页面

2023-11-22

我正在尝试访问同一域/同一 asp.net 应用程序上的网页,该网页受密码保护。触发此调用的网页和正在访问的网页的凭据都是相同的。

这是代码,我不知道为什么我总是以登录表单 html 代码结束?

using (WebClient client = new WebClient())
{
    client.QueryString.Add("ID", "1040"); //add parameters
    //client.Credentials = CredentialCache.DefaultCredentials;
    //I tried to add credentials like this
    client.Credentials = new NetworkCredential("username", "password");

    string htmlCode = client.DownloadString("http://domain.loc/testpage.aspx");
}

我怀疑您尝试访问的网页使用表单身份验证。这意味着如果您希望能够访问受保护的资源,则必须提供有效的身份验证 cookie。为了获得有效的身份验证 cookie,您必须首先通过向发出 cookie 的登录页面发送 POST 请求来对自己进行身份验证。一旦您检索到 cookie,您就可以在对受保护资源的后续请求中将其发送。您还应该注意开箱即用WebClient不支持cookie。因此,您可以编写一个自定义 cookie 感知 Web 客户端:

public class CookieAwareWebClient : WebClient
{
    public CookieAwareWebClient()
    {
        CookieContainer = new CookieContainer();
    }
    public CookieContainer CookieContainer { get; private set; }

    protected override WebRequest GetWebRequest(Uri address)
    {
        var request = (HttpWebRequest)base.GetWebRequest(address);
        request.CookieContainer = CookieContainer;
        return request;
    }
}

现在您可以使用此客户端来触发 2 个请求:

using (var client = new CookieAwareWebClient())
{
    var values = new NameValueCollection
    {
        { "username", "john" },
        { "password", "secret" },
    };
    client.UploadValues("http://domain.loc/logon.aspx", values);

    // If the previous call succeeded we now have a valid authentication cookie
    // so we could download the protected page
    string result = client.DownloadString("http://domain.loc/testpage.aspx");
}

显然,由于 ASP.NET 的 ViewState 糟糕,您可能需要在登录请求中发送一些其他参数。您可以执行以下操作:在 Web 浏览器中进行身份验证,并使用 FireBug 查看需要发送的确切参数和标头。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WebClient 使用凭据访问页面 的相关文章

  • 为什么 int8_t 和用户通过 cin 输入显示奇怪的结果[重复]

    这个问题在这里已经有答案了 一小段代码让我发疯 但希望你能阻止我跳出窗外 看这里 include
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • 使用 LINQ2SQL 在 ASP.NET MVC 中的各种模型存储库之间共享数据上下文

    我的应用程序中有 2 个存储库 每个存储库都有自己的数据上下文对象 最终结果是我尝试将从一个存储库检索到的对象附加到从另一个存储库检索到的对象 这会导致异常 Use 构造函数注入将 DataContext 注入每个存储库 public cl
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • 获取两个工作日之间的天数差异

    这听起来很简单 但我不明白其中的意义 那么获取两次之间的天数的最简单方法是什么DayOfWeeks当第一个是起点时 如果下一个工作日较早 则应考虑在下周 The DayOfWeek 枚举 http 20 20 5B1 5D 3a 20htt
  • 如何使用 LINQ2SQL 连接两个不同上下文的表?

    我的应用程序中有 2 个数据上下文 不同的数据库 并且需要能够通过上下文 B 中的表的右连接来查询上下文 A 中的表 我该如何在 LINQ2SQL 中执行此操作 Why 我们正在使用 SaaS 产品来跟踪我们的时间 项目等 并希望向该产品发
  • 在 iFrame 内维护会话状态

    不确定我是否疯了 但我在 iFrame 内的会话状态遇到问题 它是一个域在另一个域中的简单设置 我不需要跨域共享任何内容 我想做的就是将一个网站嵌入到另一个网站中 并且我希望该嵌入网站能够使用 cookie 会话状态登录 编辑 更新 等 为
  • C# HashSet 只读解决方法

    这是示例代码 static class Store private static List
  • C# 中的合并运算符?

    我想我记得看到过类似的东西 三元运算符 http msdn microsoft com en us library ty67wk28 28VS 80 29 aspx在 C 中 它只有两部分 如果变量值不为空 则返回变量值 如果为空 则返回默
  • 为什么 std::strstream 被弃用?

    我最近发现std strstream已被弃用 取而代之的是std stringstream 我已经有一段时间没有使用它了 但它做了我当时需要做的事情 所以很惊讶听到它的弃用 我的问题是为什么做出这个决定 有什么好处std stringstr
  • 等待进程释放文件

    我如何等待文件空闲以便ss Save 可以用新的覆盖它吗 如果我紧密地运行两次 左右 我会得到一个generic GDI error
  • CMake 无法确定目标的链接器语言

    首先 我查看了this https stackoverflow com questions 11801186 cmake unable to determine linker language with c发帖并找不到解决我的问题的方法 我
  • 使用 %d 打印 unsigned long long

    为什么我打印以下内容时得到 1 unsigned long long int largestIntegerInC 18446744073709551615LL printf largestIntegerInC d n largestInte
  • 调用堆栈中的“外部代码”是什么意思?

    我在 Visual Studio 中调用一个方法 并尝试通过检查调用堆栈来调试它 其中一些行标记为 外部代码 这到底是什么意思 方法来自 dll已被处决 外部代码 意味着该dll没有可用的调试信息 你能做的就是在Call Stack窗口中单
  • WebSocket安全连接自签名证书

    目标是一个与用户电脑上安装的 C 应用程序交换信息的 Web 应用程序 客户端应用程序是 websocket 服务器 浏览器是 websocket 客户端 最后 用户浏览器中的 websocket 客户端通过 Angular 持久创建 并且
  • 我的班级应该订阅自己的公共活动吗?

    我正在使用 C 3 0 遵循标准事件模式我有 public event EventHandler
  • 使用 .NET Process.Start 运行时挂起进程 - 出了什么问题?

    我在 svn exe 周围编写了一个快速而肮脏的包装器来检索一些内容并对其执行某些操作 但对于某些输入 它偶尔会重复挂起并且无法完成 例如 一个调用是 svn list svn list http myserver 84 svn Docum
  • 如何从 ODBC 连接获取可用表的列表?

    在 Excel 中 我可以转到 数据 gt 导入外部数据 gt 导入数据 然后选择要使用的数据源 然后在提供登录信息后 它会给我一个表格列表 我想知道如何使用 C 以编程方式获取该列表 您正在查询什么类型的数据源 SQL 服务器 使用权 看
  • 当我使用 OpenSSL1.1.0g 根据固定的 p 和 g 值创建 Diffie Hellman 密钥协议密钥时,应该执行哪些检查?

    您好 我尝试通过这段代码使用修复 p 和 g 参数来制作 Diffie Hellman Keysanswer https stackoverflow com a 54538811 4706711 include

随机推荐

  • 使用 ServiceWorker 缓存 iframe 请求

    我正在尝试使用 ServiceWorker 缓存 iframe 的请求 使用 sw toolbox js 但无论我如何尝试 正如 Chrome Network Tab 告诉我的那样 ServiceWorker 永远不会提供文件 这是我的 s
  • ElasticSearch 5:带有 multi_field 的 MapperParserException

    此映射已在 ES 2 X 中运行 现在在 ES 5 中出现异常 type1 properties name type multi field fields name type string index analyzer standard i
  • Soap 错误,编码:对象没有“RecordId”属性

    我正在在线制作一个连接到肥皂网络服务的注册表单 并且应该能够通过它保存付款信息 PHP是这样的 function create member fee wsdl WSDL LOCATION client new mySoap wsdl arr
  • 如何在 NASM 汇编中进入 32 位保护模式?

    我正在学习 x86 汇编 并且正在尝试在 NASM 中制作一个玩具操作系统 但我不明白一些东西 我制作了一个成功启动内核的引导加载程序 从包含内核文件的软盘中加载 14 个扇区 在这些标记为的扇区中搜索文件kernel feo 将该文件加载
  • PHP:gzdeflate 在多台机器上安全吗?

    在 PHP 手册中有一条关于 gzdeflate 的评论说 gzcompress 产生更长的数据 因为它嵌入了以下信息 字符串上的编码 如果您正在压缩数据 仅在一台机器上处理 那么您无需担心 关于您使用其中哪些功能 但是 如果您通过 使用这
  • Django 中的 TDD,如何对我的模型进行单元测试?

    我是 TDD 新手 并尝试在 Django 项目中应用 TDD 实践 基于伦敦学校 TDD 工作流程 我从外到内 视图层 表单层和模型层工作 在表单层 我计划构建一个模型表单 其中包含一些 自定义验证方法 我认为 基于TDD 我只需要测试我
  • 并发修改异常

    我目前正在开发一个多线程应用程序 偶尔会收到并发修改异常 平均大约每小时一次或两次 但以看似随机的间隔发生 有问题的类本质上是映射的包装器 它扩展了LinkedHashMap accessOrder 设置为 true 该类有几个方法 syn
  • 如何在 MPAndroidChart 中添加 x 轴作为日期时间标签?

    我在项目中实现了温度报告折线图 MPAndroidChart 库 在 X 轴上应绘制日期时间 在 Y 轴上应绘制温度 我刚刚在 X 轴标签中添加了日期时间作为字符串 但它已折叠 所以请任何人指导我 使用 MPAndroidChart 3 0
  • Java ConcurrentMarkSweep 垃圾收集器未清除所有垃圾

    简短形式 CMS 垃圾收集器似乎无法收集不断增加的垃圾量 最终 我们的 JVM 被填满 应用程序变得没有响应 通过外部工具 JConsole 或jmap histo live 清理一次 更新 问题似乎与 JConsole 的 JTop 插件
  • 以编程方式将 .reg 文件合并到 win32 注册表中

    以编程方式将 reg 文件合并到注册表中的最佳方法是什么 这是为了单元测试 reg 文件是一个测试工件 将在测试开始和结束时添加然后删除 或者 如果有更好的方法对注册表进行单元测试 可以使用 reg 文件删除注册表项 尽管我不确定它的记录情
  • 对每行的某些列的单元格求和

    我想计算某些列的总和 然后将此求和应用于每一行 不幸的是 我只能迈出第一步 现在我该如何让它发生在每一行 我知道 R 不需要循环 什么是好的方法 我的矩阵 zscore 如下所示 a b c t y 1 3 4 7 7 4 2 4 56 6
  • 从 p:remoteCommand 的 oncomplete 处理程序调用 JavaScript 函数 - 使用一些 JavaScript 代码模拟相同的功能

    注意 虽然这个问题涵盖了很长的文本信息和一堆 Java 代码片段 但它只是针对 JavaScript jQuery 和一些 PrimeFaces 的东西 只是
  • 使用 JDBC 将 Microsoft Access 数据库连接到 Java 并编译

    对于学校数据库项目 我们正在制作一个数据库程序 用户 GUI 和数据库 我使用 Microsoft Access 2010 创建了数据库并填充了一些示例数据 并将其保存为 mdb 格式并将其放置在我的项目文件夹中 当在 Eclipse 中运
  • 使用 JavaScript 解决线性方程和类似的代数问题

    我是 JavaScript 新手 我正在尝试编写一个解决线性方程的简单脚本 到目前为止 我的脚本只能求解正负线性方程 例如 2x 28 18x 36 4x 10 我希望它还能够解决包含乘法和除法的线性方程 代数问题 例如 2x 3x 4 2
  • java.lang.OutOfMemoryError BitmapFactory.nativeDecodeAsset()

    您好 我正在创建一个关于交通标志的应用程序 交通标志采用 png 格式 其中一些我在水平滚动视图中显示 但是当尝试打开活动时 我从 android market 错误报告中收到此错误 这是我的错误报告
  • 如何使用 Javascript 找到虚拟视口/屏幕宽度?

    是否有一致的方法来使用 Javascript 确定移动设备的屏幕和虚拟视口的宽度 我的目标平台是移动 Safari 和 Android 的原生浏览器 但我也在 Android 上使用其他浏览器进行测试 我尝试过screen width wi
  • ASP Net Core:添加与 IdentityUser 的多对多关系

    我需要在asp net core中添加与UserIdentity的多对多关系 即 一个用户可以拥有很多本书 一本书可以有很多用户所有者 我有书本课 public class Book public int Id get set 我扩展了 U
  • collect2:错误:ld 终止于信号 11 [分段错误],核心已转储

    我当时正在使用 GLFW 学习 OpenGL 当时对 makefile 并没有很好的理解 我可以使用 OpenGL 但我决定更多地学习 makefile 经过大量的网站 时间和反复试验后 我想出了这个 EXENAME OpenGL Demo
  • 删除Java中的第一个空格

    如何删除 Java 中的第一个空格 现在我正在使用这个 if str charAt 0 str str replace 只需使用str trim 摆脱所有前导和尾随空格
  • WebClient 使用凭据访问页面

    我正在尝试访问同一域 同一 asp net 应用程序上的网页 该网页受密码保护 触发此调用的网页和正在访问的网页的凭据都是相同的 这是代码 我不知道为什么我总是以登录表单 html 代码结束 using WebClient client n