WebService 中操作 HttpRequest / HttpResponse (二)
来源:互联网 发布:td lte网络 编辑:程序博客网 时间:2024/05/19 09:15
我们可以通过 HttpContext.Current.Request/Response 将WebService 改造为更佳适合被HttpWebRequest调用的方法。
先来看看下面简单的示例:
F5运行一下,你会看到一个自动生成的帮助页面,这个帮助页面只有在本地调试时能看到,发布后远程是无法看到这个帮助页面,但可以在
Web.config 里加上配置再发布即可见。
在帮助页面里,你可以看到Http的调用方式:
你可以按照这个方式用 HTTP POST 调用这个WebMethod:
【客户端】
这时 HttpResponse 返回的是一个Xml格式的字符串。
当然可以控制 Response.ContentType 来返回Xml以外的格式,比如:json, image等
【服务端】
【客户端】
如果希望用HTTP GET方式调用WebMethod,则需要使用 ScriptMethod 特性:[ScriptMethod(UseHttpGet=true)],此特性用于指定可从客户端脚本调用的方法的信息。使用此特性可以指定可用于调用方法的 HTTP 谓词(GET 或 POST)。它还使您可以指定是要使用 JSON 还是 XML 对响应进行格式设置。 使用 ScriptMethod 特性时,同时要使用:[System.Web.Script.Services.ScriptService] (Service1类上的特性)
【服务端】
【客户端】
注意:GET调用时是通过Url传值,如果是string需要使用 data='test' 两边加上单引号,因为使用json反序列化。没有引号直接当成是数值转换会出错。(将抛出 500 的服务端错误)
ScriptMethod 还有一个参数可以控制输出 ResponseFormat,所以没有必要直接控制 Response.ContentType,直接返回即可。
【服务端】
但这样返回的Json并不单纯:)
{"d":{"__type":"WebSvcHttp.Task","ID":"1b6d28b961324c69a690204bc07922ea","Title":"test"}}
一番改造,WebMethod 也能成为 REST 架构风格的 Web API,但是它还无法实现 UrlRewrite,返回的Json也不够单纯,控制也还达不到WCF那么强大。不过简单应用也足够了。
- WebService 中操作 HttpRequest / HttpResponse (二)
- WebService 中操作 HttpRequest / HttpResponse (一)
- WebService 中操作 HttpRequest / HttpResponse (一) - Lullaby's Blog - 博客频道 - CSDN.NET
- HttpClient,HttpRequest,HttpResponse
- Servlet HttpRequest和HttpResponse
- HttpRequest和HttpResponse对象
- 在控制器中如何获得: ServletContext,HttpSession,HttpRequest,HttpResponse
- javaweb之HttpRequest与HttpResponse
- 服务器的两个对象:HttpResponse和HttpRequest
- HttpRequest,HttpResponse,HTTP GET 和 HTTP POST
- Django的HttpRequest和HttpResponse对象
- Django——HttpRequest和HttpResponse
- httprequest跳转和httpresponse跳转的区别
- HttpContext, HttpRequest, HttpResponse 常用对象摘要
- Django中视图总结[urls匹配,HttpRequest对象,HttpResponse,render,redirect对象,对象序列化接受及案例]
- 【RLIB】C++调用HttpRequest 、HttpResponse下载远程HTTP/HTTPS资源
- HttpRequest获取文件流,HttpResponse输出文件流
- 【Cocos2d-x】Cocos2d-X网络编程-HttpRequest/HttpClient/HttpResponse
- 在同一个tomcat下,不同的web项目共享session
- oracle的异常处理
- 高级分析(BI)本质的思考
- 在Silverlight中使用HierarchicalDataTemplate为TreeView实现递归树状结构
- Linux 驱动学习笔记
- WebService 中操作 HttpRequest / HttpResponse (二)
- OpenCV在VC++2008 Express中的一个可恶错误!
- NetBeans启动失败,提示“JVM creation failed”的解决办法
- 查看linux版本是多少位
- java设计模式9:Proxy
- 图像的像素点操作
- 文件的保存
- 图像绘制功能
- SQL对Xml字段的操作