今天主要写下  POST等其他方式 发送请求 以及 流方式 文件的上传与下载

一.Post 提交数据

先来想下 POST和Get 的不同   Get 方式 我们直接通过 url  来传递参数   先来看下我们的  创建方法吧

   [WebInvoke(UriTemplate = "Tasks/Add", Method = "POST", RequestFormat = WebMessageFormat.Json)]    void Create(PocoTask pocoTask);

我们需要接受一个实体类   格式为json格式  这就再次出现上文的问题  我们的客户端没有实体类  没法把实体类序列化为json  难道要自己拼接json么? 当然不用。那简直太痛苦了。

这里给大家推荐Json.Net  这里有两个类 可以帮我们完成  单个实体的转换 以及集合实体的转换 分别是 JObject 和 JArray

我们只需声明这两个类后  .toString 就可得到他的json格式了  很方便吧~ 看代码

这里完全可以不用dynamic的  像注释那样的写法就行 这样即使服务器不支持.net4.0 也可以使用的

知道了如何构建POST 提交的数据 就开始实现POST提交吧~ 上代码 依然是三种方式 放一起 对比

这三个方式 个人很推荐 第三种 也是目前最新的 .net4.5里集成的 访问REST 非常的方便 因为他支持 直接点出来 PUT 以及 DELETE请求

简直是为rest 量身定制的~~ 看下 PUT请求

这里需要注意下  因为我们发送的是json 不论是哪种发送请求的方式 都要记得 设置ContentType=application/json

否则会抛出 HTTP 400的错误  400-错误的请求 很多都是客户端请求不正确造成的  所以一般出来400错误 可以重点检查下 客户端请求的问题

因为 PUT 与 DELETE 和 POST 基本类似  我就不上代码了

二.REST 的文件上传 与下载

流文件的上传和下载

先来看服务端的接口与实现

我们要实现三个功能

1. 展示一张图片

2.下载一个文件

3.上传一个文件

一个一个说 先说展示图片 实现代码

aaarticlea/png;base64,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" alt="" />

这个是在浏览器中直接打开  比较简单  这里记得设置输出的 ContentType  有时我们想打开的是别的格式 这里有个小方法  根据文件扩展名获得输出的ContentType

也就是上面用到的GetContentType方法  在园子的知识库里发现的GetContentType

客户端 非常简单 直接引用连接即可

2.下载

上面的是直接把文件显示在浏览器中 如果我们希望下载资源呢 方法也很简单和以前的方法是一样的  直接上代码

文件下载

 public void GetExecl(string execlName)         {             string folder = System.Web.Hosting.HostingEnvironment.MapPath("~/Files");             var FullFileName = Path.Combine(folder, execlName);             if (File.Exists(FullFileName))             {                 FileInfo DownloadFile = new FileInfo(FullFileName);                 HttpContext.Current.Response.Clear();                 HttpContext.Current.Response.ClearHeaders();                 HttpContext.Current.Response.Buffer = false;                 HttpContext.Current.Response.ContentType = "application/octet-stream";                 HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(DownloadFile.FullName, System.Text.Encoding.ASCII));                 HttpContext.Current.Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());                 HttpContext.Current.Response.WriteFile(DownloadFile.FullName);                                  HttpContext.Current.Response.Flush();                 HttpContext.Current.Response.End();               }         }

3.上传 这个文件上传 才是重点要说的  折腾了好久~

首先要说的是  一定要记得配置文件 如果用REST 模版 配置方法如下

  <system.serviceModel>     <serviceHostingEnvironment  aspNetCompatibilityEnabled="true"/>     <standardEndpoints >       <webHttpEndpoint >         <!--              Configure the WCF REST service base address via the global.asax.cs file and the default endpoint              via the attributes on the <standardEndpoint> element below         -->         <standardEndpoint   name="" maxReceivedMessageSize="3000000" defaultOutgoingResponseFormat="Json" helpEnabled="true"  automaticFormatSelectionEnabled="true">           <readerQuotas maxArrayLength="300000"/>         </standardEndpoint>                </webHttpEndpoint>     </standardEndpoints>   </system.serviceModel>

这样就可以上传大文件了

客户端实现上传很简单 借助 HttpClient

本来写到这  以为上传很简单的就能完成了 结果却弄了好久

先说下以前的写法

以前这样 都能成功  谁知道这次移到 REST WCF 中  竟然报错  发现不能读取Stream.Length   在这里问下各位高手 ~为什么读取Stream.Length 会报错?

CSDN 的  fangxinggood  给了解释 非常感谢

因为它被封装成了MessageBodyStream,就像WCF Streamed的数据一样,Length是不支持的。WCF里是客户端一边传服务端一边收。到达服务端开始写IO时,流并没有全部传输完,所以 MessageBodyStream不支持Length。但REST时是Http协议,所以其实Stream已经全部到达服务端了。如果你想取长度,可以 用: var len = WebOperationContext.Current.IncomingRequest.ContentLength;来获得。

如图

最后就会抛出Http 400的错误

百思不得其解  只好换了另一种方法这种方法不需要 长度length

可是却发现在 转化成byte 这次是报错  输入的不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、两个以上的填充字符,或者填充字符间包含非空白字符。

再次请问原因?  希望遇到过的朋友告知

解决办法

后来 通过谷歌 发现另外一种 获得长度的方法 在WCF REST里   这样就能用第一种方法了

把最早方法里的

long ByteLength=stream.Length;

换成

long ByteLength = WebOperationContext.Current.IncomingRequest.ContentLength;

这样就可以得到长度了  上传问题也就解决了~~

这里说下 如果上传的是图片 有个很简单的方法   核心代码 简单两行即可~

三.Session与Cookie

在WCF 里  是可以使用session的  但是在REST 的WCF 里  貌似却不能使用session 查了些资料 没有发现使用session的办法

可能是因为使用session会让服务器和客户端耦合。 后来找到了 REST 常见误区  http://www.prescod.net/rest/mistakes/

里面提到了一条  session 是无关紧要的。

cookie 还是可以正常使用的  这里说下 客户端读取cookie的方法  webclient 貌似不能读到 要使用更加灵活的 HttpWebRequest

主要是这两句

CookieContainer Cookie = new CookieContainer();      request.CookieContainer = Cookie;

四.总结

在做这方面的工作  把经验分享给大家 也希望会的人 能解答下我问中的问题~~

REST WCF  体现了ROA 面向资源编程  感觉更好了解耦了客户端与服务端  而且调用 REST 服务  也简单了很多 没有了代理等 效率也提高了 喜欢这种风格的方式

参考:

http://blog.csdn.net/fangxinggood/article/details/6235662

原文:

http://www.cnblogs.com/wlflovenet/archive/2011/10/28/WCFREST2.html

WCF REST (二)的更多相关文章

  1. WCF服务二:创建一个简单的WCF服务程序

    在本例中,我们将实现一个简单的计算服务,提供基本的加.减.乘.除运算,通过客户端和服务端运行在同一台机器上的不同进程实现. 一.新建WCF服务 1.新建一个空白解决方案,解决方案名称为"WC ...

  2. WIN8+VS2013编写发布WCF之二(部署)

    上文简介了如何建立WCF工程并且调试,下面说一下如何部署. 本文将陆陆续续讲述三种部署方式,随着项目的进展将不断补全. 声明: 用管理员身份打开VS2013,发布前请将程序的.net版本改成与服务器相 ...

  3. WCF(二)

    摘自:http://www.cnblogs.com/yank/p/3666271.html WCF入门教程(二)从零做起-创建WCF服务 通过最基本的操作看到最简单的WCF如何实现的.这是VS的SDK ...

  4. WCF入门二[WCF的配置文件]

    一.概述 往往在很多项目中数据库连接字符串.变量和一些动态的加载类会写在配置文件中.WCF也会在配置文件中写入一些配置参数,比如服务的地址.服务用于发送和接收消息的传输和消息编码等,通过配置文件可以灵 ...

  5. 【WCF系列二:如何调用WCF服务】WCF入门教程(图文)VS2012

    上一遍到现在已经有一段时间了,先向关注本文的各位“挨踢”同仁们道歉了.小生自认为一个ITer如果想要做的更好,就需要将自己的所学.所用积极分享出来,接收大家的指导和吐槽.网上也有很多WCF相关的教程, ...

  6. WCF(二)三种通信模式

    WCF在通信过程中有三种模式:请求与答复.单向.双工通信 请求与答复模式 客户端发送请求,然后一直等待服务端的响应答复(异步调用除外),期间处于假死状态,直到服务端有了答复后才能继续执行其他程序 请求 ...

  7. WCF基础二

    1:地址 . WCf 的每一个服务都有一个唯一地址,地址包括传输协议和服务位置. HTTP:采用http\https协议进行传输,默认端口为80. TCP:采用ne.tcp协议进行传输,默认端口为80 ...

  8. WCF(二)配置文件

    上篇文章中对WCF的配置放到App.config中,这样可以使程序更灵活.更具有扩展性. 下面说下配置文件中各个节点的含义. 服务端: WCF配置文件节点放在<system.serviceMod ...

  9. WCF学习(二)

    WCF通道模型 绑定的本质是一个配置好的通道栈,为了方便程序员专著与业务逻辑,WCF提高了一系列常用绑定.随后会有相应的自定义通道栈代码 无论交互的另一方具体位置在哪里,WCF都会为消息的发送和接收建 ...

  10. WIN8+VS2013编写发布WCF、一(编写)、二(部署)、三(调用)

    原文://http://www.cnblogs.com/tntboom/p/4348483.html 引言:上学期因为写服务器用WCF,所以连查资料再瞎调试勉强成功了,但是这学期又到了用WCF的时候, ...

随机推荐

  1. 【Cocos游戏实战】功夫小子第五课之帮助场景和选关功能的实现

    功夫小子之帮助场景和选关功能的实现 转载请注明出处:http://blog.csdn.net/suool/article/details/46661231 本节课的视频教程地址是: hmsr=teac ...

  2. Android插件化(二):使用DexClassLoader动态载入assets中的apk

    Android插件化(二):使用DexClassLoader动态载入assets中的apk 简单介绍 上一篇博客讲到.我们能够使用MultiDex.java载入离线的apk文件.须要注意的是,apk中 ...

  3. 自编Photoshop简单教程

    由于本科时对图形图像比較感兴趣所以Ps和Ai玩的还算能够.所以无论本科时候还是研究生阶段总是有非常多人让我帮忙处理一些图片.记得工作那一年參与一个大项目时还帮了CRI里员工处理了一些图片项目中也处理了 ...

  4. jquery08

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  5. Nginx安装以及配置

    安装编译工具及库文件 1 yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel 安装 PCRE 下载 PC ...

  6. POJ 3049 DFS

    思路:暴搜 //By SiriusRen #include <cstdio> #include <iostream> #include <algorithm> us ...

  7. Linux 交换分区swap

    Linux 交换分区swap 一.创建和启用swap交换区 如果你的服务器的总是报告内存不足,并且时常因为内存不足而引发服务被强制kill的话,在不增加物理内存的情况下,启用swap交换区作为虚拟内存 ...

  8. 00084_Map接口

    1.Map接口概述 通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同. (1)Collection中的集合,元素是孤立存在的(理解为单身),向集 ...

  9. PatentTips - Improving security in a virtual machine host

    BACKGROUND Computer viruses are a common problem for computer users. One typical mode of attack is t ...

  10. Elasticsearch5.0.1 + Kibana5.0.1 + IK 5.0.1

    Elasticsearch5.0.1 + Kibana5.0.1 + IK 5.0.1安装记录 最近工作需要,开始研究ES,当前ES的最新版本为5.0.1,从之前的2.x的版本号一下升级到5.x,主要 ...