目录
一、WebService转发的实现
A系统需要调用C系统的某些接口,但是网络策略不通,B系统与C系统的网络策略是通的,A系统与B系统的网络策略也是通的,于是就有了转发接口请求的需求。
通过C系统提供的接口契约文件(wsdl文件),使用VS工具生产接口类文件,参考:https://blog.csdn.net/yinshengchen/article/details/82856792
创建WebService(BTestSrv),并使用上一步生成的接口类(ITestBinding)中的参数对象,作为WebService接口的入参和返回。
先使用AutoMapper工具将B命名空间下的入参对象bInput转为C命名空间下的入参对象cInput;
再将cInput作为入参调用C命名空间下的process接口,返回C命名空间下的输出对象cOutput;
然后使用AutoMapper工具将C命名空间下的cOutput转为B命名空间下的输出对象bOutput;
最后将bOutput作为接口的返回对象进行返回。
public class BTestSrv : ITestBinding
{
[WebMethod]
B.OutputParameters ITestBinding.process(B.InputParameters bInput)
{
C.InputParameters cInput = AutoMapper.Mapper.Map<C.InputParameters>(bInput);
CTestSrv srv = new CTestSrv();
srv.Proxy = null;
srv.RequestEncoding = System.Text.Encoding.UTF8;
srv.Timeout = 60 * 1000;
C.OutputParameters cOutput = srv.process(cInput);
B.OutputParameters bOutput = AutoMapper.Mapper.Map<B.OutputParameters>(cOutput);
return bOutput;
}
}
二、使用Postman测试WebService
如图所示,增加Content-Type参数(值为:text/xml),选择Post方式,调用接口
注意接口地址应如:http://xxxx/testwebservice.asmx,后面不要加“?wsdl”,否则调用时会返回404错误