- 浏览: 148614 次
- 性别:
- 来自: 北京
文章分类
最新评论
假设我们要提供一个小小的服务,采用HTTP协议进行通讯,客户端 POST 一些数据到服务器上。客户端不一定是PC,更不一定会按照一个Web Form的格式来提交数据,它可能是一个运行在PC上的Desktop Application,也可能是一个移动设备。
服务器端接收这样的请求极其简单,下面寥寥数行代码即可实现:
在Web站点中新建一个Generic Handler(*.ashx),代码如下:
- <%@ WebHandler Language= "C#" Class= "Echo" %>
- using System;
- using System.Web;
- using System.IO;
- public class Echo : IHttpHandler
- {
- private System.Text.Encoding DefaultEncoding = System.Text.Encoding.UTF8;
- public void ProcessRequest (HttpContext context)
- {
- context.Response.ContentType = "text/plain" ;
- context.Response.ContentEncoding = DefaultEncoding;
- Stream inputStream = context.Request.InputStream;
- using (StreamReader reader = new StreamReader(inputStream, DefaultEncoding))
- {
- string requestContent = reader.ReadToEnd();
- string responseContent = string .Format( "Received: {0} <== END" , requestContent);
- context.Response.Write(responseContent);
- }
- }
- public bool IsReusable
- {
- get { return false ; }
- }
- }
然后我们写一个简单的客户端来测试它。在这个客户端里我们实现了一个类HttpClient来进行HTTP POST操作:
- // -----------------------------------------------------------------------
- // <copyright file="HttpClient.cs" author="Yaping Xin">
- // Http protocol client.
- // </copyright>
- // -----------------------------------------------------------------------
- namespace ConsoleClient
- {
- using System;
- using System.IO;
- using System.Net;
- using System.Text;
- /// <summary>
- /// Http protocol client.
- /// </summary>
- public class HttpClient
- {
- /// <summary>
- /// Post data to specific url and get response content.
- /// </summary>
- /// <param name="url">the url to post</param>
- /// <param name="postData">post data</param>
- /// <returns>response content</returns>
- public string Post( string url, string postData)
- {
- Uri uri = new Uri(url);
- HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
- request.Method = "POST" ;
- request.ContentType = "application/x-www-form-urlencoded" ;
- Encoding encoding = Encoding.UTF8;
- byte [] bytes = encoding.GetBytes(postData);
- request.ContentLength = bytes.Length;
- using (Stream writer = request.GetRequestStream())
- {
- writer.Write(bytes, 0, bytes.Length);
- writer.Close();
- }
- return this .ReadResponse(request);;
- }
- /// <summary>
- /// Read response content from http request result.
- /// </summary>
- /// <param name="request">http request object</param>
- /// <returns>response content.</returns>
- private string ReadResponse(HttpWebRequest request)
- {
- string result = string .Empty;
- using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
- {
- using (Stream responseStream = response.GetResponseStream())
- {
- using (StreamReader reader = new StreamReader(responseStream, Encoding.UTF8))
- {
- result = reader.ReadToEnd();
- reader.Close();
- }
- }
- }
- return result;
- }
- }
- }
然后我们这样就能得到HTTP POST的返回:
- // Replace the string content with your actual address please.
- string defaultUrl = "http://ServerName:8081/WebPath/AnyService.ashx" ;
- HttpClient client = new HttpClient();
- string response = client.Post(defaultUrl, @ "abc 123! 测试 @" );
- Console.OutputEncoding = System.Text.Encoding.UTF8;
- Console.WriteLine(response);
假设Client与Server两端都约定好采取某个格式对数据进行序列化与反序列化,例如都采用Json,客户端把对象通过Json封装后 Post给Server,Server再采用Json将对象从Json字符串中解析出来,这样进行数据传递是便利的。再假设我们要压缩传送出的数据量,那 么可以进行gzip压缩与解压。又假设我们要考虑安全性,那么我们可以在对象的结构中添加security token进行认证,以及采用某种加密算法对字符串进行加密与解密。怎么发挥就看您具体的应用了,构建一个属于您自己的轻量的service易如反掌。
发表评论
-
asp.net导出csv的例子
2012-10-26 14:35 3388http://wiki.asp.net/page.aspx ... -
在Visual Studio 2010中使用Visual Leak Detector
2012-10-26 14:08 824http://blog.csdn.net/xinyaping/ ... -
[科普小短文]在C#中调用C语言函数 (Linux & Mono版) 转
2012-10-26 13:57 1379http://blog.csdn.net/xinyaping/ ... -
在 Visual Studio 2012 中创建 ASP.Net Web Service 转
2012-10-26 13:53 1203http://blog.csdn.net/xinyaping/ ... -
错误时捕获和响应错误
2012-10-24 20:49 901ASP.NET 提供三种用于在出现错误时捕获和响应错误的主 ... -
asp.net 中的错误跳转 customerrors 对html文件不起作用 转载
2012-10-24 20:08 1357一般对于asp.net的网 ... -
ASP.NET自定义错误页面
2012-10-24 20:06 783ASP.NET 提供三种用于在出现错误时捕获和响应错误的主 ... -
ASP.NET页面错误处理及邮件发送简易方案
2012-10-18 16:58 8871包含页面:Default.aspx,Error.aspx ... -
ASP.NET中缓存(cache)的控制方法
2012-10-18 13:30 1496... -
ASP.NET页面执行顺序
2012-10-17 20:08 7601.对象初始化(OnInit方法) ... -
asp.net 格式化时间日期
2012-10-17 15:59 1165asp.net 格式化时间日期 ...
相关推荐
ASP.NET MVC Handler 是微软开发的一种Web应用程序框架,用于构建可维护性和可测试性极高的Web应用。这个框架基于模型-视图-控制器(MVC)设计模式,它为开发者提供了更多的控制力和灵活性,使他们能够更高效地构建...
2. **异步请求**:由于Android主线程不允许执行耗时操作,网络请求通常在后台线程进行,然后通过Handler、AsyncTask或者现代的Retrofit+RxJava组合将结果传递到主线程更新UI。 3. **JSON解析**:HTTP请求的响应通常...
在这个"ASP.NET源码——利用handler生成静态页面的完整解决方案.zip"压缩包中,我们可以看到一个利用ASP.NET Handler(HttpHandler)来生成静态HTML页面的实践案例。 Handler在ASP.NET中扮演着处理特定HTTP请求的...
在这个特定的".NET C# ASP.NET 文字转语音.zip"项目中,开发者利用了Text-to-Speech(TTS)技术,将文字转化为可听的语音。这种技术在各种应用场景中非常有用,比如无障碍阅读、自动客服系统或者教育软件等。 首先...
1. **Asp.net架构**:Asp.net基于.NET Framework,采用HTTP协议处理请求。其工作流程包括请求接收、页面生命周期管理、控件事件处理和响应生成等步骤,确保了高效的页面处理。 2. **MVC模式**:Asp.net支持MVC...
ASP.NET 是一个强大的Web应用程序开发框架,由微软公司推出,用于构建动态、数据驱动的Web应用。jQuery 是一个流行的JavaScript库,它简化了DOM操作、事件处理和Ajax交互。Ajax(Asynchronous JavaScript and XML)...
3. **服务器端处理**:在ASP.NET中,我们需要一个接收图片数据的HTTP POST接口。可以创建一个ASHX(HTTP Handler)或者API控制器来处理这个请求。C#代码会接收到二进制数据,然后将其保存为图片文件。考虑到安全性和...
(3)**后端处理**:在ASP.NET中,创建一个接收文件的HTTP Handler或ASP.NET Page。接收到文件后,可以进行文件验证、存储到服务器的指定位置,或者执行其他业务逻辑。 (4)**反馈结果**:当文件上传成功,ASP.NET...
RazorPages 使用处理程序方法来处理传入的 HTTP 请求(GET / POST / PUT / Delete),这些类似于 ASP.NET MVC 或 WEB API 的 Action 方法。 Razor Pages 遵循特定的命名约定,Handler 方法也是如此。他们也遵循特定...
例如,创建一个HTML表单,用户填写信息后,通过HTTP POST提交到服务器端,服务器端的ASP.NET代码捕获这些数据,创建一个新的数据库记录。 2. **删除(Delete)**:这个操作涉及到从数据库中移除特定的记录。这可能...
ASP.NET与jqGrid结合使用是Web开发中一种常见的数据展示技术。jqGrid是一个强大的JavaScript库,用于在网页上创建交互式的数据网格。本示例主要介绍如何在ASP.NET环境中利用jqGrid来显示JSON数据,解决可能遇到的...
2. **Web.Config配置文件**:这是ASP.NET应用程序的核心配置文件,用于存储整个应用的配置信息,包括应用程序的运行时设置、连接字符串、路由规则、安全设置等。 3. **IIS(Internet Information Services)**:它...
ASP.NET上传模块是ASP.NET应用程序中的一个重要组成部分,它允许用户通过网页将文件上传到服务器。在Web开发中,文件上传功能常用于用户提交照片、文档或其他类型的数据。在这个场景中,我们关注的是一个专为ASP.NET...
在ASP.NET中,我们可以创建一个HTTP Handler(ashx文件)或者Web Control(ascx文件)来处理验证码的生成。当用户请求验证码图片时,服务器端的代码会执行上述生成验证码和图像的过程,然后将生成的图像以JPEG或PNG...
对于ASP.NET,后台处理程序(Generic Handler)是一种轻量级的HTTP处理器,可以用来处理AJAX请求。创建一个新的`.ashx`文件,然后在其中定义处理逻辑: ```csharp public class YourHandler : IHttpHandler { ...
**SWFUpload ASP.NET:构建高效文件上传功能** SWFUpload 是一个开源的JavaScript库,专为Web应用程序设计,提供了一种优雅的方式处理文件上传,尤其是对于ASP.NET平台。它支持多选文件、显示上传进度条,使得用户...
1. **UploadHandler.ashx**:这是一个HTTP处理程序(HTTP Handler),在ASP.NET中用于处理特定类型的请求。在这个案例中,它可能被用来接收和处理文件上传请求,同时更新进度条状态。 2. **Upload.aspx**:这是一个...
**jQuery AJAX 在 ASP.NET 中的应用** 在Web开发中,jQuery AJAX 提供了一种高效、便捷的方式,用于在不刷新整个页面的情况下与服务器进行异步通信。在ASP.NET框架下,结合jQuery,我们可以创建动态、交互性强的Web...