收藏 分销(赏)

ASP.NET-Web-API实现POST报文的构造与推送.doc

上传人:人****来 文档编号:9713338 上传时间:2025-04-04 格式:DOC 页数:3 大小:19.50KB
下载 相关 举报
ASP.NET-Web-API实现POST报文的构造与推送.doc_第1页
第1页 / 共3页
ASP.NET-Web-API实现POST报文的构造与推送.doc_第2页
第2页 / 共3页
点击查看更多>>
资源描述
  毕设和OAuth协议相关,而要理解OAuth协议就必须理解HTTP GET/POST方法。因此研究了一下如何使用Web API或MVC构造POST报文并实现客户端与服务器端的交互。   我使用的工具是Visual Studio 2013 + Web API 2 + MVC 5。   在两个不同的VS2013实例中分别新建两个Web项目,都选择空模板,其中一个命名为Client,采用MVC架构,另一个命名为Server,采用Web API架构。   这里需要两个不同的VS2013实例是为了能使两个IIS Express服务在同一台机器上同时运行。   我们先来看看客户端:   由于只是个Demo,因此我们只在客户端中新建一个空的MVC控制器,将其命名为HomeController。它会自带一个Index()方法。我们在这里面写好构造请求并发送请求的代码:   复制代码   namespace Client.Controllers   {   public class HomeController : Controller   {   //   // GET: /Home/   public ActionResult Index()   {   string url = ""; // 这里我们还不知道服务器的url,因此留空   #region 构造POST请求   HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;   request.Method = "POST";   request.ContentType = "application/x-www-form-urlencoded";   request.Host = "localhost:14340";   string body = "client_id=123&redirect_uri="+url+"&response_type=code";   byte[] bodyBytes = Encoding.UTF8.GetBytes(body);   Stream requestStream = request.GetRequestStream();   requestStream.Write(bodyBytes,0,bodyBytes.Length);   #endregion   #region 发送请求并取得响应   // 必须使用HttpWebRequest.GetResponse()方法,请求才能被发送并取得响应   HttpWebResponse response = request.GetResponse() as HttpWebResponse;   StreamReader sr = new StreamReader(response.GetResponseStream());   ViewBag.Response = sr.ReadToEnd();   #endregion   return View();   }   }   }   复制代码   接下来我们构造服务器端:   在Server项目中,新建一个Web API 2控制器。命名随意(我这里命名为ApiTestController),在控制器中写入一个方法Post,返回HttpResponseMessage类型。   本来我一直以为POST的参数可以在Request属性中获取,但是仔细检查了Request属性的所有属性和方法,包括扩展方法,都没有找到可以直接读取POST报文请求体的属性或方法。查阅资料得知,如果要在POST请求中获取请求体的内容,就必须将参数封装在一个类中。于是我们建立一个类RequestArgs如下:   复制代码   namespace Server.Models   {   ///       /// 对于POST请求,必须对请求体的所有参数建立一个模型类。   ///       public class RequestArgs   {   public string client_id { get; set; }   public string redirect_uri { get; set; }   public string response_type { get; set; }   }   }   复制代码   这里的参数和上文客户端Action方法中的请求报文内容必须保持名称一致(包括大小写)   之后我们再写入控制器的POST方法如下:   复制代码   namespace Server.Controllers   {   public class ApiTestController : ApiController   {   public HttpResponseMessage Post(RequestArgs args)   {   string client_id = args.client_id;   string redirect_uri = args.redirect_uri;   string response_type = args.response_type;   return Request.CreateResponse(HttpStatusCode.OK, "I have received your message. Client_id = "+client_id+", RedirectUri = "+redirect_uri+"response_type = "+response_type);   }   }   }   复制代码   这里我们直接返回了报文的内容,而在实际的项目中,我们可以自己对传入的参数进行处理。   之后我们编译运行服务器端(最好是按F5进入调试模式运行)。可以看到出现的Web页面似乎是一个错误页面,但是不用管它,我们的服务器已经开始运行了。   记下服务器的地址(一般也就是端口号会变化),将这个服务器的地址填入客户端的url变量。   编译运行客户端,如果出现返回的信息(这里是“I have received your message”和参数信息),说明我们的请求成功了。   更多信息请查看IT技术专栏   
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服