添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

前两天将网站的部分功能在小程序上实现,网站的后台是http,没有配置域名和安全证书,小程序的线上版本是无法访问的,因此需要从配有域名和安全证书的站点进行转发。即小程序请求A,A转发请求到B,B获取数据给A,A再回传给小程序。

本文若有出入,请指正——来自渣渣的颤抖
客官可移步到 https://fanjiajia.cn/2019/07/04/Cplusplus/flx1/

ASP.Net接收前台发送的请求都是从一个 一般处理程序ashx 开始的

public void ProcessRequest(HttpContext context)

context即为请求的上下文,包括了请求的参数等等信息。

一开始,我自信的以为实现这样的转发是特别easy的一件事,因为在我 漫无边际 的知识储备中,一个熟悉而又陌生但却非常有好感的字眼—— redirect 浮现在我眼前,完美。
然而,啪啪啪打脸发生在我redirect之后,B获取参数抛出一个非常性感的异常, 未将对象添加到引用的实例 ,即空指针异常。
仔细一想,mb,redirect后参数没有带过去啊,但是说明转发成功了,开森,然而,我真的太年轻啊。
百度,没有人说redirect可以带参数,(所以我也不知道到底可不可以),凉凉
没办法最后只能新建一个request,自己封装请求。

string host_reservation = ""; // 本地车辆预约网站后台 string host_reservation = ""; // 实验楼车辆预约网站后台 string host_reservation = ""; // 现场车辆预约网站后台 string baseurl_reservation = "http://" + host_reservation + "/Handler/WebSpace/XX/XX.ashx"; HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(baseurl_reservation); Encoding encoding = Encoding.UTF8; string param = HttpUtil.GetPostParams(context); Utility.LogWrite.WriteTestLog("paras", param); byte[] bs = Encoding.UTF8.GetBytes(param); string responseData = String.Empty; req.Method = "POST"; req.ContentType = "application/json"; // 'application/json' "application/x-www-form-urlencoded" req.ContentLength = bs.Length; using (Stream reqStream = req.GetRequestStream()) reqStream.Write(bs, 0, bs.Length); reqStream.Close(); using (HttpWebResponse response = (HttpWebResponse)req.GetResponse()) using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding)) responseData = reader.ReadToEnd().ToString(); context.Response.Write(responseData); catch (Exception e) LogWrite.WriteSysLog("Reservation_Location", e); context.Response.Write(BackDataUtil.BackResult(110, "异常了", "0"));

其实也不复杂,就是再发起一次请求,这里注意, req.ContentType ,我已开始用的 application/x-www-form-urlencoded ,发送到B的中文会乱码

最后完美实现,然而没高兴多会儿,直接抛弃了我这么 辛苦 实现的,因为这玩意实在是太慢了,本来B上的处理,数据量就较大,再加上转发,慢得我可以边等他加载,边玩王者,,,,,为什么说这玩意慢呢,因为现在把B上的内容copy到A上了,不转发了,确实快了,在下觉得是不是因为这里的流处理,流这个东西,谁知道呢!

此致,敬礼

转载于:https://www.cnblogs.com/numen-fan/p/11134804.html

请求转发 ,是一种服务器行为,收到客户端发出的请求后,服务器 进行 转发,转发不会执行转发后的代码,此时将会对请求对象 进行 保存,地址栏中的URL地址不会改变,得到响应后,服务端再将响应发送给客户端,整个过程只有一个请求,一个响应。 request.getRequestDispatcher().forward(req,resp); //调用这个方法实现转发 1.无参数get请求 一般get请求有两种写法,一种是$.get() 一种是$.ajax({type:"get"}),我个人比较喜欢用后者。 下面例子主要是get无参数请求,获取人员列表并将数据返回到前台,并将返回的json数据转换成字符串弹出,以便知道是否请求成功,并且返回的数据是否正确 1 $.ajax(... 汽车销售系统/汽车销售系统使用教程/汽车销售系统哪个好/汽车销售系统开源/汽车销售系统价格/汽车销售系统设计(源码+LW+调试文档+讲解等)/MySQL/SpringBoot/VueHTML5