当前位置: 首页 > 编程语言 > C#

如何模拟访问url?分享

时间:2023-04-10 22:00:26 C#

如何模拟访问url?我有一个用户提交订单的页面,提交后,我想点击一个url(http://externalsite.com?id=12345&sessionid=abc123)而不是实际将它们重定向到外部网页。有没有办法做到这一点?当然,从服务器端代码使用HttpWebRequest。这是一个示例:HttpWebRequestrequest=(HttpWebRequest)WebRequest.Create("http://sofzh.miximages.com/c%23/externalsite.com");request.Method="GET";HttpWebResponse响应=(HttpWebResponse)request.GetResponse();使用(StreamReaderreader=newStreamReader(response.GetResponseStream())){stringresult=reader.ReadToEnd();//如果你需要处理响应文本...用户的浏览器。使用:使用“假”图像请求(如果您可以忽略任何潜在的图像类型问题):使用jQuery的跨浏览器ajax支持最简单的形式:$.ajax({url:"http://sofzh.miximages.com/c%23/externalsite.com"});您还可以应用其他格式来隐藏iframe或图像,或者在它用于访问其他服务器时使用javascript将其删除。您可以使用WebClient类在服务器端Asp.Net代码中发出HTTP请求。然后您可以对生成的html做任何您喜欢的事情。结合上面来自voithos和JoelPurra的两个答案,我建议您考虑第三种选择。以下是我对每项内容的评估:1)一种更可靠的访问站点的方法是在服务器端将其作为操作处理程序的一部分来实际提交用户信息。这可以使用上面的voithos方法轻松完成:HttpWebRequestrequest=(HttpWebRequest)WebRequest.Create("http://sofzh.miximages.com/c%23/externalsite.com");request.Method="GET";HttpWebResponse响应=(HttpWebResponse)request.GetResponse();使用(StreamReaderreader=newStreamReader(response.GetResponseStream())){stringresult=reader.ReadToEnd();//如果需要,请处理响应文本...}这允许您的服务器访问其服务器并确保它被调用。这种方法的缺点是它会给您的服务器带来二次HTTP请求的开销。如果其他服务器运行缓慢,您可能会遇到阻塞问题,导致结果明显变慢。您可以使用多线程/异步来解决这个问题——但这是您得到的结论:它引入了一些无法控制的问题——但它确保您知道远程源是否被命中,以及回复是什么。2)或者,如果您的用户正在发布实际帖子并且HTML响应作为新页面返回,您可以简单地将JoelPurra的响应注入到结果页面的HTML中,从而强制用户的浏览器负责访问远程服务器。这种方法的缺点是,如果您的客户端出于某种原因触发请求并且不等待下一页加载,则外部站点返回404错误等,不仅外部处理没有完成-您不会知道它没有完成。3)如果你有能力使用像jQuery这样的客户端库来做处理,我建议你让所有的表单提交在线和异步发生。方法是这样的:在这个方法中-你将邮件发送到你自己的服务器,成功后-立即开始对远程服务器的第二个请求。但是,因为您等到第二个请求被触发之后,而不是直到用户显示成功/失败-您知道至少在UI层,这两个请求都是在客户端从页面排队之前发出的。因此-从工作流和开销的角度来看可能更安全-但是,它需要您使用JavaScript编写一些UI级逻辑,这可能会出现问题,具体取决于您的项目。以上就是C#学习教程:HowdoIsimulateaccesstourl?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: