aspnet自定义请求-ASP.NET自定义一个请求成功发送,为什么服务器无法拿到数据

问题描述

ASP.NET自定义一个请求成功发送,为什么服务器无法拿到数据

场景:服务端套件要求客户端必须携带安全令牌,所以需要在客户端的请求报文头中植入一个安全令牌(也就是一个键值对),那么就不能使用HTML的表单进行提交,我需要自定义一个请求。
所以我用到了webrequest,代码如下:

public class Handler : IHttpHandler {

public void ProcessRequest (HttpContext context)
{
    context.Response.ContentType = "text/plain";
    //调用管控平台提供的客户端程序集的方法进行统一加密
    string authToken = (new RESTClientExtension.Utility()).GenerateAuthorizationToken();

    #region 把客户端页面的数据拼接成请求字符串
    System.Text.StringBuilder data = new System.Text.StringBuilder();
    data.AppendFormat("setuser={0}", context.Request.Form["setuser"].Replace(' ', '+'));
    data.AppendFormat("&No={0}", context.Request.Form["No"]);
    data.AppendFormat("&isKIA={0}", context.Request.Form["isKIA"]);
    data.AppendFormat("&Transfer={0}", context.Request.Form["Transfer"]);
    data.AppendFormat("&opinion={0}", context.Request.Form["opinion"]);
    data.AppendFormat("&isagree={0}", context.Request.Form["isagree"]);
    data.AppendFormat("&newname={0}", context.Request.Form["newname"]);
    #endregion

    string response = RequestUrl("http://10.73.199.26:8080/iRightResponse.ashx", data.ToString(), "POST", "text", "utf-8", authToken);
    context.Response.Write(response);
}
protected string RequestUrl(string url, string data, string method, string contentType, string charset,string authToken)
{
    WebRequest request = WebRequest.Create(url);

    request.Method = method;
    request.ContentType = contentType;
    request.Headers.Add("charset:" + charset);
    request.Headers.Add("Authorization", authToken);
    Encoding encoding = Encoding.GetEncoding(charset);
    if (data != null)
    {
        byte[] buffer = encoding.GetBytes(data);
        request.ContentLength = buffer.Length;
        request.GetRequestStream().Write(buffer, 0, buffer.Length);
    }
    else
    {
        request.ContentLength = 0;
    }
    using (HttpWebResponse wr = request.GetResponse() as HttpWebResponse)
    {
        using (StreamReader reader = new StreamReader(wr.GetResponseStream(), encoding))
        {
            return reader.ReadToEnd();
        }
    }
}

public bool IsReusable {
    get {
        return false;
    }
}

}
请求时发送成功了,因为有了服务器的返回消息,但是返回消息显示表明,服务器无法拿到"No"的值,或者No的值为空,而且我也对比了正常请求和这种自定义请求的请求报文,没有区别,但是正常请求可以成功提交。

坐等高人指点,谢谢

时间: 2024-12-21 06:38:41

aspnet自定义请求-ASP.NET自定义一个请求成功发送,为什么服务器无法拿到数据的相关文章

实现一个Asp.net自定义Back控件

asp.net|控件 本文讲述了如何给Web页面添加一个服务器端控件,从而将用户的浏览器重定向到该控件所指向的页面(referring page). by Juval Lowy Q:实现一个ASP.NET Back控件我想在ASP.NET页面中添加一个链接,通过它,我可以返回到它所指向的页面.不知怎样用一个服务器端控件来实现它呢?我想通过该控件返回到已访问过的页面,而并不想用浏览历史记录的方法. A:你可以用两种方法在一个Web页面上实现一个"Back"链接.第一种方法是用客户端脚本读

PHP判断一个请求是AJAX请求还是普通请求

在PHP程序中,如何判断一个网页请求是ajax请求还是普通请求?我们在做项目中经常会存在这样一个问题,在浏览器中直接输入我ajax提交的地址后,浏览器就能直接请求数据并将数据打印到页面上.从程序的严谨性上和安全上来说,我觉得这样非常不好. 但是由于水平有限,这个问题直到今天才被我解决,特此留下文章以供有此需要的人学习. 首先说说原理:在发送ajax请求的时候,我们可以通过XMLHttpRequest这个对象,创建自定义的header头信息,如果您使用的是原生的ajax方法,也就是未使用jquer

asp.NET自定义服务器控件内部细节

如大家要转载,请保留本人的版权:/* *Description:asp.NET自定义服务器控件内部细节系列教程*Auther:崇崇-天真的好蓝 *MSN:chongchong2008@msn.com *Dates:2007-05-20*Copyright:ChongChong2008 YiChang HuBei China */ 关于自定义asp.NET自定义服务器控件文章和源码示例网上已经很多了,不过有些内部些节方面,让一些初次接触这方面技术的朋友难以理解,对服务器控件的方方面面也很疑惑.为此

如何在ASP.net页面中请求远程Web站点

问:如何在已有ASP.net页面中,去请求远程WEB站点,并能传参,且得到请求所响应的结果.用下边的小例子讲解具体功能的实现: 首先,我们想要请求远程站点,需要用到HttpWebRequest类,该类在System.Net命名空间中,所以需要引用一下.另外,在向请求的页面写入参数时需要用到Stream流操作,所以需要引用System.IO命名空间. 以下为Get请求方式: Uri uri = new Uri("http://www.cnsaiko.com/");//创建uri对象,指定

asp.net-使用ASP.NET通过检测请求头判断是否为移动设备这样写可以吗?

问题描述 使用ASP.NET通过检测请求头判断是否为移动设备这样写可以吗? protected void mobileRedirect() { string userAgent = Request.UserAgent; bool isPC = true; string[] Agents = new string[] { ""Android""iPhone""SymbianOS""Windows Phone""

html页面请求-请问当请求一个html页面时,服务器就与客户端建立了一个会话吗?

问题描述 请问当请求一个html页面时,服务器就与客户端建立了一个会话吗? 请问当请求一个html页面时,服务器就与客户端建立了一个会话吗?如果跳转到其它的页面,这个会话就会结束吗? 解决方案 aspphpjsp不同应用服务器有自己的会话跟踪,默认情况下,大多数web应用层使用临时cookie来跟踪sessionid,因此对于浏览器进程,每个进程保持相同的会话.关闭再开就是新的会话.但是也可以用永久cookie,那么就可以保持到浏览器关闭以及多个浏览器实例的共享 解决方案二: 错,会话是应用服务

asp如何获取url请求后返回的参数

问题描述 asp如何获取url请求后返回的参数 请求一个url,然后请求成功后会返回一些参数,我该如何获取这个参数? string HZurl = "http://" + strDxIP + "/gwsp_web_interface/jsp/third/getReportByGwpp.jsp?userId=crm&pwd=a66abb5684c45962d887564f08346e8d"; 请求这个地址,请求成功后,会返回一个id.我该如何获取这个id:

asp.net 中 通过ajax请求一般处理程序,可是请求头中的cookie

问题描述 asp.net 中 通过ajax请求一般处理程序,可是请求头中的cookie asp.net 中 通过ajax请求一般处理程序,可是请求头中的cookie只有一条 ,请问大侠们,cookie有限制吗?我并没有跨域请求啊 解决方案 asp.net Ajax Post 请求 一般处理程序 解决方案二: cookie 里边存储的是两个键值对,可是请求头中只携带了一个键值对.不知道为什么 解决方案三: cookie 里边存储的是两个键值对,可是请求头中只携带了一个键值对.不知道为什么 解决方案

ASP.NET Core应用针对静态文件请求的处理[2]: 条件请求与区间请求

通过调用ApplicationBuilder的扩展方法UseStaticFiles注册的StaticFileMiddleware中间件帮助我们处理针对文件的请求.对于StaticFileMiddleware处理请求的逻辑,大部分读者都应该想得到:它根据请求的地址找到目标文件的路径,然后利用注册的ContentTypeProvider根据路径解析出与文件内容相匹配的媒体类型,默认情况下得到的媒体类型是根据目标文件的扩展名解析出来的.解析出来的媒体类型将作为响应报头Content-Type的值.St