问题标签 [webrequest]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
15526 浏览

xml - 从 WebRequest 中模拟 WebResponse

我终于开始着手创建一些与 RESTful Web 界面一起使用的应用程序,但是,我担心每次按 F5 运行一系列测试时我都会敲击他们的服务器。

基本上,我需要获取一系列 Web 响应,以便测试我是否正确解析了不同的响应,而不是每次都访问他们的服务器,我想我可以这样做一次,保存 XML,然后在本地工作。

但是,我看不到如何“模拟”WebResponse,因为(AFAIK)它们只能由WebRequest.GetResponse实例化

你们怎么去嘲笑这种事情?你?我真的不喜欢我正在锤击他们的服务器这一事实:SI 不想过多地更改代码,但我希望有一种优雅的方式来做到这一点..

接受后更新

威尔的回答是我需要的一记耳光,我知道我错过了一个基本点!

  • 创建一个接口,该接口将返回一个代表 XML 的代理对象。
  • 实现接口两次,一次使用 WebRequest,另一次返回静态“响应”。
  • 然后,接口实现要么根据响应实例化返回类型,要么实例化静态 XML。
  • 然后,您可以在测试或生产时将所需的类传递给服务层。

敲完代码后,我将粘贴一些示例。

0 投票
7 回答
36769 浏览

c# - WebRequest 是与网站交互的正确 C# 工具吗?

我正在用 C# 编写一个小工具,它需要使用 POST 和 json 格式向/从网站发送和接收数据。我以前从未在 C#(或任何语言)中做过这样的事情,所以我正在努力寻找一些有用的信息来帮助我开始。

我在 C# 中找到了一些关于 WebRequest 类的信息(特别是从这里开始),但在我开始深入研究之前,我想知道这是否是适合这项工作的工具。

我找到了很多将数据转换为 json 格式的工具,但没有太多其他工具,所以任何信息在这里都会很有帮助,以防我最终陷入死胡同。

0 投票
2 回答
1335 浏览

c# - 在服务器端 webrequest 上执行严格的超时策略

我们需要调用第 3 方以使用 REST 检索值,但是如果我们在 10 毫秒内没有收到响应,我想使用默认值并继续处理。

我倾向于使用异步 WebRequest 来做到这一点,但我想知道使用同步请求是否有技巧。

有什么建议吗?

0 投票
1 回答
1590 浏览

asp.net-mvc - 在 ASP.NET MVC 中按优先级返回表单、查询字符串、cookie 值

我想知道为什么在从用户请求中获取值时首选查询字符串。在哪里?1) System.Web.Mvc.DefaultModelBinder 的代码如下所示(只是其中的一部分):

2)如果我在控制器中有一个带有这个签名的方法:

参数 (x, y) 绑定到来自查询字符串的值,而不是来自表单。我希望 Request.From 中的值比 Request.QueryString 中的值具有更高的优先级。

编辑:我看到第二种情况是由第一种情况(DefaultModelBinder)引起的,对吗?

背后的动机是什么?

0 投票
3 回答
3584 浏览

asp.net - 从 localhost 到 localhost 的 WebRequest:为什么被拒绝?

我的应用在某些时候使用 WebRequest 从自身获取页面。

这应该不是问题。它实际上在服务器上运行良好,这是一个具有中等信任的“共享”托管包。在本地,我使用基于中等信任的自定义安全策略,其中包括以下内容 - 直接从默认的中等信任策略复制:

违规行位于自定义 XmlRelativeUrlResolver 中:

被请求的 url 位于本地主机上,与请求者在同一个应用程序中。这是堆栈跟踪的顶部。

有人在这里看到问题吗?

@Sijin:谢谢你的建议。发送到解析器的 url 基于请求 URL,我在调试器中确认访问 127.0.0.1 的站点会产生相同的结果。

0 投票
7 回答
102591 浏览

c# - 通过 C# 应用程序测试网站是否存在

我正在寻找通过 C# 应用程序测试网站是否存在的最佳方法。

背景

我的应用程序包含一个Winforms UI、一个后端WCF 服务和一个用于向 UI 和其他消费者发布内容的网站。为了防止 UI 启动并且由于缺少 WCF 服务或网站关闭而无法正常工作的情况,我添加了一个应用程序启动检查以确保所有内容都处于活动状态。

该应用程序是用 C#、.NET 3.5、Visual Studio 2008 编写的

当前解决方案

目前我正在向网站上的测试页面发出网络请求,该页面将反过来测试网站,然后显示结果。

我假设如果在此调用期间没有出现异常,那么一切都很好并且 UI 可以启动。

问题

这是最简单、正确的方法,还是有其他一些我在 C# 中不知道的偷偷摸摸的调用或更好的方法。

0 投票
12 回答
163168 浏览

c# - 使用 System.Net.WebRequest 时无法设置某些 HTTP 标头

当我尝试在对象上添加 HTTP 标头键/值对时WebRequest,出现以下异常:

必须使用适当的属性修改此标头

我尝试Headers使用 Add() 方法将新值添加到集合中,但仍然遇到相同的异常。

我可以通过将 WebRequest 对象转换为 HttpWebRequest 并设置诸如 之类的属性来解决此问题httpWebReq.Referer ="http://stackoverflow.com",但这仅适用于通过属性公开的少数标头。

我想知道是否有办法通过请求远程资源来更精细地控制修改标头。

0 投票
4 回答
4683 浏览

.net - 无法在 .net 中发布 https WebRequest?

您好我在尝试在 Https 下发布 WebRequest 时遇到问题。

我收到以下错误

1.-底层连接已关闭:无法连接到远程服务器。

2.-操作超时

3-底层连接已关闭:无法为 SSL/TLS 建立安全通道。

我尝试了我公司和客户公司的大约 3 或 4 个不同的代理,即使我直接与 ISP 提供商没有任何限制,我在执行以下方法时遇到上述错误

这是否发生在代理后面,请求只能从代理后面的一台 PC 成功发布。代理没有安装客户端证书。

这是在 .net framework 1.1 下,并且请求已经包含网络凭据。

可能是什么?

更新

内部异常第三个错误如下:函数成功完成,但必须再次调用才能完成上下文

根据 iisper.h文档,此错误属于

MSDN上,这是指

SEC_I_CONTINUE_NEEDED 客户端必须将输出令牌发送到服务器并等待返回令牌。然后将返回的令牌传递给 InitializeSecurityContext (Schannel) 的另一个调用。输出令牌可以为空。

这是否意味着 PC 缺少客户端证书?

0 投票
4 回答
17235 浏览

c# - C#:下载超时的 URL

在 .NET 中最好的方法是什么?我总是忘记我需要什么Dispose()(或用 包裹using)。

编辑:经过长时间使用WebRequest,我发现了自定义WebClient. 好多了。

0 投票
5 回答
17541 浏览

ssl - HttpWebRequest 服务器不可用 503 问题

我最初使用 WebRequest 和 WebResponse 来发送 Http Post 消息。我总是得到“OK”的回应。我发布的消息是使用 xml 中的证书签名的 XML。

组成如下:发送到 https 网站的 C# 服务。HTTPS 网站在另一个我不能说的地方。HTTPS 本地网站,它只是接收我在本地发布的消息并将结果写入文件。只是为了模拟其他网站正在获得什么。

本地网站使用自签名证书签名,将于 2048 年到期。

直到本周,这段代码都运行良好。我总是张贴并得到一个好的。在这两个网站上。但本周测试和真正的项目实施都进入了 Kaput。在两个网站上。
在本地网站上,它说无法连接到 SSL。这个问题是由自签名证书引起的,由于某种原因超出了我的理解,它给了地狱。感谢这里的问题,我刚刚验证了证书始终是真实的,现在它不再有问题了。

要解决此问题,只需编写以下代码:

在您的应用程序开始时。所以它只运行一次。

剩下的问题是“远程服务器返回错误:(503)服务器不可用。”。我在浏览器中输入 URL,它对我来说很好。在该网站的代码中没有收到任何内容,当它进入网络响应时,它给了我上述错误

我做了一个仅发送“Testing 1 2 3”的测试应用程序,但我不断收到错误消息。我也将它发送到哈佛 https 网站,没有错误。

这是我从网上找到的另一个例子:

更新

错误是我用 httpwebrequest 调用的那个需要一些我没有提供的 httpheaders。在唯一发生的事情是我得到“OK”响应之前。他们修复了他们的代码,我修复了我的代码,现在它可以工作了。

如果它发生在其他人身上,请像下面所说的那样检查代理设置,并检查另一方是否给出异常或什么都不返回。