.Net 后台在一个API接口中调用另一个接口

5 篇文章 0 订阅
1 篇文章 0 订阅
现在很多项目中需要调用其他公司的私人接口,这个时候我们不能暴露别人的接口,所以就要在自己的接口中调用,再整理输出为自己需要的数据
 public class Data
{
    public int errcode { get; set; }   //返回结果状态

    public string errmsg { get; set; }   //返回结果消息

    public object result { get; set; }  //返回结果
}
  
    [HttpPost]
    [Route("GetAccessToken")]   //最终调用的接口
    public JsonResult<Data> GetAccessToken()
    {
        Data rtd = new Data();
        try
        {
          

            //获取***的接口url
            string url = "要调用别人接口的地址";

            Dictionary<string, string> param = new Dictionary<string, string>();
            param.Add("Name", "张三");  //请求数据字段
            param.Add("Password","123456");//请求数据字段

            //调用接口,发送数据
            string returnData = DoPost(url, param);
            JObject joResult = (JObject)JsonConvert.DeserializeObject(returnData);
            if (joResult.GetString("code") == "200")  //返回数据中code字段是保存查询状态,200为成功
            {
                rtd.errcode = 0;
                rtd.errmsg = "操作成功!";
                rtd.result = joResult;  //返回json数据

            }
            else
            {
                rtd.errcode = 1;
                rtd.errmsg = "操作失败!";
                rtd.result = joResult;
            }
        }
        catch (Exception ex)
        {
            rtd.errcode = 1;
            rtd.errmsg = ex.Message.ToString();
        }
        return Json(rtd);
    }

这里是调用别人接口的方法
private string DoPost(string url, Dictionary<string, string> param)
    {
        StringBuilder sb = new StringBuilder();
        foreach (string key in param.Keys)
        {
            object value = param[key];
            sb.Append($"{key}={value}&");
        }

        string postData = sb.ToString();
        postData = postData.Substring(0, postData.Length - 1);

        byte[] byteArray = Encoding.UTF8.GetBytes(sb.ToString());

        HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        request.ContentLength = byteArray.Length;

        //打开request字符流
        Stream dataStream = request.GetRequestStream();
        dataStream.Write(byteArray, 0, byteArray.Length);
        dataStream.Close();

        //定义response为前面的request响应
        WebResponse response = request.GetResponse();

        //获取相应的状态代码
        //Console.WriteLine(((HttpWebResponse)response).StatusDescription);

        //定义response字符流
        dataStream = response.GetResponseStream();
        StreamReader reader = new StreamReader(dataStream);
        string responseFromServer = reader.ReadToEnd();//读取所有

        //关闭资源
        reader.Close();
        dataStream.Close();
        response.Close();
        return responseFromServer;
    }
    
 这个方法是把13位时间戳转换为日期形式的方法,根据需求是否使用
 private DateTime ConvertStringToDateTime(string timeStamp)
    {
        DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
        long lTime = long.Parse(timeStamp + "0000");
        TimeSpan toNow = new TimeSpan(lTime);
        return dtStart.Add(toNow);
    }
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我可以给你一个简单的.NET后端进度条接口的例子: public interface IProgressBar { void UpdateProgress(int percent); void ResetProgress(); } ### 回答2: 要写一个 .NET 后端进度条接口,可以按照以下步骤进行: 1. 创建一个 ASP.NET Web API 项目,这个项目将作为后端的服务器端点。 2. 在项目,创建一个 Controller 类作为进度条接口的处理程序。例如,可以创建一个名为 ProgressController 的类。 3. 在 ProgressController 类,添加一个方法用于启动进度条。该方法可以命名为 StartProgress(),它将接收必要的参数作为输入,例如总进度的大小、任务的描述等。在这个方法,可以使用全局变量来存储当前进度的值。 4. 添加另一个方法来获取当前进度的值。这个方法可以命名为 GetProgress(),它将返回当前进度的百分比或其他信息。 5. 在 StartProgress() 方法,需要启动一个后台线程来进行任务处理,并在处理过程更新当前进度的值。可以使用 Task 类来实现这个后台任务。 6. 在线程,可以调用一个自定义的方法来模拟长时间运行的任务,并在任务的每个步骤完成后更新当前进度的值。 7. 在 GetProgress() 方法,只需返回全局变量存储的当前进度的值。 8. 使用 ASP.NET Web API 的路由机制,为上述两个方法配置适当的路由。 上述步骤仅为示例,具体的实现方式可能会根据需求和具体情况有所不同。需要根据实际需求来确定如何启动进度条、设置进度条的值以及如何获取当前进度的信息。同时,还可以添加一些其他的方法和功能来满足具体的需求,例如取消进度条、暂停和恢复进度条等等。 ### 回答3: 制作一个 .Net 后端进度条接口十分简单。你可以使用 ASP.Net Web API 来创建一个接口,然后在其实现进度条逻辑。 首先,在你的项目创建一个 ASP.Net Web API 控制器。打开 Visual Studio,选择新建项目,然后选择 ASP.Net Web Application (.Net Framework)。将项目命名为你喜欢的名称,点击确定。 接下来,在解决方案资源管理器找到 Controllers 文件夹,右键点击该文件夹,选择添加 -> 控制器。在弹出的对话框选择 Web API 2 Controller - Empty,点击添加。 现在,你将获得一个新的空控制器类。在该类创建一个接口方法用于获取进度条的当前状态。你可以将该方法命名为 GetProgress。在方法,你可以设置进度条的当前值,并将进度条的状态返回给调用者。 下面是一个示例的代码: ```csharp public class ProgressController : ApiController { private int progress = 0; [HttpGet] public IHttpActionResult GetProgress() { // 模拟进度条的更新 if (progress < 100) { progress += 10; } else { progress = 0; } // 返回进度条的当前状态 return Ok(progress); } } ``` 接下来,在全局.asax.cs文件注册该控制器。找到 Application_Start 方法,并添加以下代码: ```csharp GlobalConfiguration.Configure(WebApiConfig.Register); ``` 然后,打开 WebApiConfig.cs 文件,并修改 Register 方法,确保控制器可以被路由到: ```csharp public static void Register(HttpConfiguration config) { // 配置 Web API 路由 config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } ``` 现在,你可以运行你的应用程序,然后使用浏览器或 API 测试工具向 `http://localhost:port/api/progress` 发送 GET 请求来获取进度条的当前状态。每次调用接口,进度条的值将会增加,直到达到 100,然后重置为0。 希望这个回答对你有帮助!如果你有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值