如何测试WCF Rest
使用SoapUI
1.新建一个rest项目

2.双击上图中的Request1
查询的时候,Method选择post
resource的地方要调整到对应的方法
查询的内容是用json格式发送
查询的的结果使用json查看

Endpoint需要补充二级域名

层级结构说明

第1个是project
第2个是wsdl或者wadl,对应到某一个域名
第3个是Service,比如在一个域名下部署多个service
第4个是Method,是service下的某一个具体的方法
第5个是Request,一个method可以有多个request,每个request可以设置自己独立的参数
使用Fiddler
https://stackoverflow.com/questions/7273364/wcf-rest-service-post-method-fails-in-fiddler
执行post
Content-Type: application/json
post下面的方框填写内容的格式,RequestBody填写传输的内容,操作类型可以选择为post,右上角execute

执行结果,在inspectors中查看

request1
POST http://localhost/Chile.Api/chileservice.svc/GetAllPartnershipsWithBrands HTTP/1.1
User-Agent: Fiddler
Host: localhost
Content-Length: 0
response1 这里的处理是有问题是,应该是返回一个未授权的错误
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/10.0
Set-Cookie: ASP.NET_SessionId=wjwnpsjnewi34hxtwr1php4b; path=/; HttpOnly
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Fri, 18 Jan 2019 08:48:38 GMT
Content-Length: 46{"Message":"Authentication Error","Status":98}
request2
手动添加这个 Content-Type: application/json
POST http://localhost/Chile.Api/chileservice.svc/GetAllPartnershipsWithBrands HTTP/1.1
User-Agent: Fiddler
Host: localhost
Content-Length: 138
Content-Type: application/json{
"header":
{
"SecurityHash":"5b1f979e06ed3e4c7e6c92029d35ba93b96b5ab0131d1f6d8306aa04ad7abe43"
},
"parameters":
{
"Key":"xxx"
} }
response2
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/10.0
Set-Cookie: ASP.NET_SessionId=bsvtlc0sqaqxm3zcsdrfw0od; path=/; HttpOnly
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Fri, 18 Jan 2019 09:17:27 GMT
Content-Length: 98{"Message":"Server error. Detail: There is no row at position 0.","Status":99,"Partnerships":null}
request3
POST http://localhost/Chile.Api/chileservice.svc/GetAllPartnershipsWithBrands HTTP/1.1
User-Agent: Fiddler
Host: localhost
Content-Length: 138
Content-Type: application/json{
"header":
{
"SecurityHash":"5b1f979e06ed3e4c7e6c92029d35ba93b96b5ab0131d1f6d8306aa04ad7abe43"
},
"parameters":
{
"Key":"xxx"
} }
response3
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/10.0
X-AspNet-Version: 4.0.30319
Set-Cookie: ASP.NET_SessionId=hjxujm3vjc2pplf3zzg20a00; path=/; HttpOnly
X-Powered-By: ASP.NET
Date: Fri, 18 Jan 2019 09:55:21 GMT
Content-Length: 611{"Message":"","Status":0,"Partnerships":[{"Brands":"Brand1;Brand2;Brand3;Brand4;Brand5","PartnershipName":"Partnership1","PartnershipRUT":"Partnership1"},{"Brands":"Babytuto","PartnershipName":"Babytuto","PartnershipRUT":"76.268.895-6"},{"Brands":"Brand1","PartnershipName":"Depto51","PartnershipRUT":"76.319.368-3"},{"Brands":"Cencosud;Paris;Johnson;Vuelo Parapente;Varo's R'sestobar;Falabella","PartnershipName":"Regalbox","PartnershipRUT":"76.108.976-5"},{"Brands":"Brand1","PartnershipName":"Falabella","PartnershipRUT":"76.142.721-0"},{"Brands":"LATAM","PartnershipName":"LATAM","PartnershipRUT":"LATAM"}]}
直接新建一个控制台应用,然后添加WCF的Contract类库作为引用【添加ServiceReference会出问题的】
class Program
{
private static string url = "http://172.31.212.20/Lisa.WebApi2/ChileService.svc"; static void Main(string[] args)
{
//设置EmptyRequest的key
EmptyRequest emptyRequest = new EmptyRequest { Key = "xxx" };
//对emptyRequest进行Json序列化
string strJson = JsonConvert.SerializeObject(emptyRequest); //进行加密
var securityKey = "ChuckLu";
HMACSHA256Encryption hmacsha256Encryption = new HMACSHA256Encryption();
var securityHash = hmacsha256Encryption.Encrypt(strJson, securityKey); //将加密结果封装为messageHeader
MessageHeader messageHeader = new MessageHeader { SecurityHash = securityHash }; ChannelFactory<IChileService> cf = new ChannelFactory<IChileService>(new WebHttpBinding(), url);
cf.Endpoint.Behaviors.Add(new WebHttpBehavior());
IChileService channel = cf.CreateChannel(); //调用
PartnershipListResponse partnershipListResponse =
channel.GetAllPartnershipsWithBrands(messageHeader, emptyRequest); if (partnershipListResponse.Status != OperationStatus.Ok)
{
Console.WriteLine(partnershipListResponse.Status);
Console.ReadKey();
} strJson = JsonConvert.SerializeObject(partnershipListResponse);
Console.WriteLine(strJson); //foreach (var item in partnershipListResponse.Partnerships)
//{
// Console.WriteLine($@"{item.PartnershipRUT} {item.PartnershipName} {item.Brands}{Environment.NewLine}");
//}
Console.ReadKey();
}
}
如何测试WCF Rest的更多相关文章
- 测试WCF遇到的一些问题
win7+iis7 1.localhost访问bad request错误. 主机地址不要指定为127.0.0.1.设置为”全部未分配“. 2.错误 500.19(由于权限不足而无法读取配置文件)的问题 ...
- 使用WCF 测试客户端测试你的WCF服务
wcftestclient.exe是一个GUI的工具用于测试WCF,只需在Visual studio command line 窗口中键入 wcftestclient,就启动这个程序.如下图: 然后通 ...
- 使用WCF测试客户端 z
http://blog.csdn.net/u013036274/article/details/50570989 [是什么] WCF测试客户端(WCF Test Client)是一个用来测试WCF服务 ...
- Entity Framework 6 Recipes 2nd Edition(9-2)译->用WCF更新单独分离的实体
9-2. 用WCF更新单独分离的实体 问题 你想通过WCF为一个数据存储发布查询,插入,删除和修改,并且使这些操作尽可能地简单 此外,你想通过Code First方式实现EF6的数据访问管理 解决方案 ...
- WCF的同步和异步(以WPF连接为例)
2016-06-0711:05:44 在学习WCF时,学到WCF服务的同步和异步. 我理解的同步是: 当WCF服务是同步执行时,程序只有一条线程,代码只能按顺序一步一步来执行,当执行客户端/服务端某方 ...
- WCF入门简单教程(图文) VS2010版
在这个例子中我们将使用VS 2010 创建一个WCF服务,其中会了解 [DataContract] [ServiceContract] 等特性. 内置的 WCFSVCHost ,并使用“WCF测试客 ...
- WCF入门
一.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NE ...
- wcf第1步
添加System.ServiceModel 引用 Wcf 服务端 class Program { static void Main(string[] args) { ServiceHost host ...
- 【WCF】无废话WCF入门教程
一.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NE ...
随机推荐
- How Javascript works (Javascript工作原理) (七) WebAssembly 对比 JavaScript 及其使用场景
个人总结: 1.webworkers实现了用多线程浏览器来进行多线程操作js的能力. 2.web workers不能操作dom,window,document等对象,一般用于cpu计算型的任务. ...
- Hadoop-2.4.1 ubuntu集群安装配置教程
一.环境 系统: Ubuntu 14.04 32bit Hadoop版本: Hadoop 2.4.1 (stable) JDK版本: 1.7 集群数量:3台 注意事项:我们从Apache官方网站下载的 ...
- [POJ2823][洛谷P1886]滑动窗口 Sliding Window
题目大意:有一列数,和一个窗口,一次能框连续的s个数,初始时窗口在左端,不断往右移动,移到最右端为止,求每次被框住的s个数中的最小数和最大数. 解题思路:这道题是一道区间查询问题,可以用线段树做.每个 ...
- qume-kvm 命令管理
sudo /etc/init.d/acpid start 安装管理包工具 sudo apt install libguestfs-tools [ qemu-kvm qemu-kvm-tools vir ...
- 紫书 例题 11-5 UVa 10048 (Floyd求最大权值最小的路径)
这道题是Floyd的变形 改成d[i][j] = min(d[i][j], max(d[i][k], d[k][j]))就好了. #include<cstdio> #include< ...
- 紫书 习题 8-15 UVa 1617 (贪心)
先排序, 然后每个线段先放右端点, 然后往下放, 如果不能放就整体往左移动, 当不能往左移动的时候就ans++ 开始下一个整块.判断能不能向左移动要用一个变量储存每个已经放了的区间中线段与左端点距离的 ...
- 洛谷——P2615 神奇的幻方 【Noip2015 day1t1】
https://www.luogu.org/problem/show?pid=2615 题目描述 幻方是一种很神奇的N*N矩阵:它由数字1,2,3,……,N*N构成,且每行.每列及两条对角线上的数字之 ...
- Swift环境下实现UILabel居上 居中 居下对齐
首先在Xcode中新建.h文件,将下面代码复制进去 // // myUILabel.h // // // Created by yexiaozi_007 on 3/4/13. // Copyright ...
- 50个Android开发技巧(09 避免用EditText对日期进行验证)
我们都知道,在表单中对数据进行验证不但无聊并且easy出错. (原文地址:http://blog.csdn.net/vector_yi/article/details/24424713) 想象一下,一 ...
- 提高FPGA速度的quartus编译选项
Turning on some optimizations in Quartus II may help increase it. Here are some you may want to try: ...