当前位置:首页 > 技能相关 > C#与C++ > 正文内容

C# 调用webApi接口的方法(类库RestSharp)

admin1年前 (2024-06-13)C#与C++5371 修订时间:2024-06-13 16:42:54

一、类库RestSharp,用于发送http请求

依赖于Newtonsoft.Json、RestSharp,需要去NuGet安装;Newtonsoft.Json用于JSON串的生成和反向解析,RestSharp用于发起HTTP请求。

image.png

image.png

二、请求方式

引入using Newtonsoft.Json与using RestSharp才可以使用具体功能

using Newtonsoft.Json;
using RestSharp;

namespace WenXinYiYanTest
{
      //封装的方法对象,便于声明调阅
   public class ERNIE35
    {
            //HTTP请求方法,示例为文心一言的模型服务调阅请求
        public string ERNIE35_8K(string usercontent,string access_token)
        {
            //新建连接请求的地址
            var client = new RestClient($"https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions?access_token=" + access_token.Trim().ToString());
            //设定请求的Timeout
            client.Timeout = -1;
            //设定请求的方式POST\GET等
            var request = new RestRequest(Method.POST);
            //设定Content-Type
            request.AddHeader("Content-Type", "application/json");
            
            //组合请求JSON串
            ERNIE35JSON eRNIE35JSON = new ERNIE35JSON();
            messagesList messagesList = new messagesList();
            messagesList.role = "user";
            messagesList.content = usercontent.Trim().ToString();
            eRNIE35JSON.messages = messagesList;
            var body = JsonConvert.SerializeObject(eRNIE35JSON);
            //JSON串格式调整
            body = body.Replace(":{",":[{");
            body = body.Replace("}}", "}]}");
            
            //添加Body体内容,上述的JSON串内容
            request.AddParameter("application/json", body, ParameterType.RequestBody);
            //访问接口,并获取返回对象
            IRestResponse response = client.Execute(request);
            
            //获取反参JSON传,并解析为JSON对象
            var result = JsonConvert.DeserializeObject<dynamic>(response.Content);
            //返回串中 主体内容
            return result.result;
         }
    }
}

ERNIE35JSON、messagesList类对象:

public class ERNIE35JSON
{
   public messagesList messages {get; set; }
}
public class messagesList
{
   public string role { get; set; }
   public string content { get; set; }
}

最终生成的JSON格式为:

{"messages":{"role":"user","content":"请求会话的内容"}}
调整后
{"messages":[{"role":"user","content":"请求会话的内容"}]}

JsonConvert.DeserializeObject<dynamic>(response.Content)可以实现返回的JSON串反向为运行时的对象,免于设置其对应的对象类,通过result.节点名称获取对应的值。

拓展:

C# 调用webApi接口的方法(类库HttpClient)

Newtonsoft.Json

RestSharp

 您阅读本篇文章共花了: 

免责声明
本站内容均为博客主本人日常使用记录的存档,如侵犯你的权益请联系:lifei@zaiheze.com 546262132@qq.com 沟通删除事宜。本站仅带访问端口形式使用,已杜绝搜索引擎爬取。

扫描二维码推送至手机访问。

版权声明:本文由LIFEI - blog发布,如需转载请注明出处。

本文链接:http://www.lifeiai.com/index.php?id=403

分享给朋友:

评论列表

磁选机厂家磁选机厂家
1年前 (2024-07-31)

识别码:nrwayd46730GT-作者的见解独到,让我对XX问题有了全新的认识。www.well-techmachine.cn/tags/5.html

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。