首页 > 其他分享 >webapi创建和调用WebService

webapi创建和调用WebService

时间:2024-05-01 22:23:16浏览次数:31  
标签:webapi 调用 服务 ProvinceResult provinceName new public WebService

首先需要引入soapcore包

image

这个包提供了所需的类和soap终结点中间件。

引入这个这个包之后,我们需要定义提供的服务。

这里我写了一个用于查询省份面积的服务。

省份信息服务
/// <summary>
/// 省份信息服务接口
/// </summary>
[ServiceContract]
public interface IProvinceInfoService
{
    /// <summary>
    /// 获取省份面积
    /// </summary>
    /// <param name="provinceName"></param>
    /// <returns></returns>
    [OperationContract]
    ProvinceResult GetProvinceInfo(string provinceName);
}

/// <summary>
/// 省份信息服务实现
/// </summary>
public class ProvinceInfoService : IProvinceInfoService
{
    public ProvinceResult GetProvinceInfo(string provinceName)
    {
        if (string.IsNullOrEmpty(provinceName))
        {
            return new ProvinceResult();
        }
        else
        {
            switch (provinceName)
            {
                case "四川":
                    return new ProvinceResult() { Name= provinceName,Area=48.14m };
                case "新疆":
                    return new ProvinceResult() { Name = provinceName, Area = 166 };
                default:
                    return new ProvinceResult() { Name = provinceName};
            }
        }
    }
}

/// <summary>
/// 实体类
/// </summary>
[DataContract]
public class ProvinceResult
{
    [DataMember]
    public string Name { get; set; }

    [DataMember]
    public decimal Area { get; set; }
}

定义服务之后在web主机中注册服务

//添加webService服务
builder.Services.AddSingleton<IProvinceInfoService, ProvinceInfoService>();
//添加webservice服务终结点,当请求的资源在控制器中路由不到时会路由到这里
app.UseSoapEndpoint<IProvinceInfoService>("/ProvinceInfoService", new SoapEncoderOptions());

现在WebService就创建好了,实在是很简单。只是soapcore没有提供测试页面,而netFramework用.asmx写的服务不加后面的路径时,返回的是一个HTML测试页面,很方便。soapcore就没有搞这个了,默认是返回WSDL文件。

测试服务

  • WSDL文件测试

image

  • 服务方法测试

image

添加WebService服务引用

为了方便测试,我把项目发布了一下,然后把发布了的项目exe运行了起来。在解决方案中再添加正在运行的项目里面那个WebService。
有两种方法添加服务引用

  • 第一种是在项目上右键选择添加->服务引用,选择WCF那一项
    image
  • 第二种方式是双击项目下面的Connected Service,然后选择连接的服务,在服务引用那一栏点+号。仍然会弹出同样的界面
    选择下一步后,出现弹窗
    image
  • 填上服务的地址后点击转到。
  • 点击浏览,选择别人给的WSDL文件
    这两种方式都可以
    然后可以改一下自己认为合适的命名空间,我改为了ProvinceServiceReference
    然后一路下一步就行

使用WebService

使用方式和普通的实例方法调用一样,我把它写到控制器Action中

[HttpGet]
[AllowAnonymous]
public async Task<object> GetProvinceService(string provinceName)
{
    ProvinceInfoServiceClient client = new ProvinceInfoServiceClient();
    return await client.GetProvinceInfoAsync(provinceName);
}
  • 测试

image

标签:webapi,调用,服务,ProvinceResult,provinceName,new,public,WebService
From: https://www.cnblogs.com/ggtc/p/18169727

相关文章

  • python airllm调用本地大模型
    官方demohttps://github.com/lyogavin/Anima/blob/main/air_llm/examples/run_all_types_of_models.ipynb这里使用百川本地fromairllmimportAirLLMLlama2,AutoModelMAX_LENGTH=128#默认会去抱脸网下载,很慢,而且需要xx上网#model=AutoModel.from_pretrained("baichua......
  • Python调用Graylog APi 分析401错误登录日志
    ret_lst处理完成后是一个list,内容如下:[{'c_ip':'10.10.202.139','uname':'ee'},{'c_ip':'10.10.202.139','uname':'tt'},{'c_ip':'192.168.195.131','uname......
  • linux 系统调用分析
    一、linux系统调用介绍linux系统调用是linux为用户空间与内核空间交换提供的一组标准API,这些api能够让用户态进程访问内核代码,从而实现系统资源、硬件、文件读写的访问。需要注意的是,系统调用是用户态进入内核态的唯一入口,为了保证linux内核运行的稳定性,用户程序不能随意的访问内......
  • C语言关于多源文件的调用
    图片A.c////Createdbyclouon2024/4/29.//#include<stdio.h>#include"A.h"voidfunc(){printf("helloworld\n");}A.h////Createdbyclouon2024/4/29.//#ifndefMULTIPLE_SOURCE_FILES_A_H#defineMULTIPLE_SOUR......
  • python使用langchain调用本地大模型
    参考https://www.cnblogs.com/scarecrow-blog/p/17875127.html模型下载之前说过一次https://www.cnblogs.com/qcy-blog/p/18165717也可直接去官网,把所有文件都点一遍fromlangchainimportPromptTemplate,LLMChainimporttorchfromtransformersimportAutoTokenizer,A......
  • js 链式调用
    functionarrany(name){lettasks=[]tasks.push(()=>{console.log(name)})functionwait(duration){tasks.push(()=>newPromise(resolve=>{setTimeout(resolve,duration)}))returnthis}functionexecute(......
  • delphi 2006中,使用stdcall调用约定时,压缩结构参数的bug分析
    问题今天遇到一个很奇怪的问题,有一个dephi2006写的dll,使用了stdcall的调用约定,参数传递了结构体,在函数中收到的结构体值和传入的不一致,最后一个boolean类型,应为False,收到的是True,如下图:代码//结构体定义RStruct=packedrecordi1:Integer;i2:Integer;i3:I......
  • ABAP 调用外部WEBAPI
    ABAP代码如下,仅在内部测试通过,未涉及外部网络WEBAPI及跨域调用。*&---------------------------------------------------------------------**&ReportZYC_WEBAPI*&Restfulapi测试REPORTZYC_WEBAPI.DATA:LENTYPEI,"发送报文长度LEN_STRING......
  • webapi动态创建后台任务(使用排队的后台任务)
    很多时候我们都会使用后台定时任务,但有些任务不需要定时执行,只需要请求到来时执行一次,比如请求服务器到某个地方同步数据,但请求不需要等数据同步完成再响应。这时候就可以使用排队的后台任务。基本原理是用一个队列保存任务委托,然后用一个后台定时任务依次执行队列中的委托。MSD......
  • WEBAPI传参及默认首页设置
    开发工具:VS2017创建WEBAPI,1.选择ASP.NETCoreWeb应用程序2.选择如下,HTTPS配置勾选去掉,暂不配置3.“属性”中调试默认界面及launchsettings.json 4.调试以后默认页面 5. ......