using HttpUtil;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Web; /// <summary>
/// 底层基础方法
/// </summary>
public class BaseClass
{
private static readonly string _faceIp = "192.168.0.1"; //人脸IP
private static readonly string _carIp = "192.168.0.2"; //车行IP
private static readonly int _port = 80; public BaseClass()
{
//
// TODO: 在此处添加构造函数逻辑
//
} /// <summary>
/// 停车场查询
/// </summary>
/// <param name="plateNo"></param>
/// <param name="pageSize"></param>
/// <param name="pageNumber"></param>
/// <returns></returns>
public static ParkingLotsInfoDto ParkingLotsInfoFun()
{
return CarPost<ParkingLotsInfoDto>("/vms/ParkingLotsInfo", new
{ });
} /// <summary>
/// 人脸
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="url"></param>
/// <param name="body"></param>
/// <returns></returns>
public static T FacePost<T>(string url, dynamic body)
{
string bodyStr = JsonConvert.SerializeObject(body);
return Core<T>(_faceIp+ _port + url, bodyStr, res =>
{
if (res.cipher == null) return default(T);
else return JsonConvert.DeserializeObject<T>(DesEncrypt(res.cipher.ToString()));
});
} /// <summary>
/// 车行
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="url"></param>
/// <param name="body"></param>
/// <returns></returns>
public static T CarPost<T>(string url, dynamic body)
{
string bodyStr = JsonConvert.SerializeObject(body);
return Core<T>(_carIp + _port + url, bodyStr, res =>
{
if (res.cipher == null) return default(T);
else return JsonConvert.DeserializeObject<T>(DesEncrypt(res.cipher.ToString()));
});
} private static T Core<T>(string url, string body, Func<YSResultMsg, T> resFunc)
{
try
{
var resStr = PostWebRequest(url, body);
if (resStr.IsNullOrEmpty())
{
BaseHelper.WriteLogs("YSAPI", "接口无返回数据请求失败!");
return default(T);
}
YSResultMsg res = JsonConvert.DeserializeObject<YSResultMsg>(resStr);
T ret = resFunc.Invoke(res);
return ret;
}
catch (Exception ex)
{
BaseHelper.WriteLogs("YSAPI_Error", "接口调用失败!" + ex.Message);
return default(T);
}
} public static string PostWebRequest(string postUrl, string paramData)
{
try
{
var requestParams = new { cipher = AesEncrypt(paramData), version="v2.0",timestamp=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") };
string ret = string.Empty;
byte[] byteArray = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(requestParams)); //转化
HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(postUrl));
webReq.Method = "POST";
webReq.ContentType = "application/x-www-form-urlencoded";
webReq.ContentLength = byteArray.Length;
Stream newStream = webReq.GetRequestStream();
newStream.Write(byteArray, 0, byteArray.Length);//写入参数
newStream.Close();
HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
ret = sr.ReadToEnd();
sr.Close();
response.Close();
newStream.Close();
return ret;
}
catch (Exception ex)
{
return ex.Message;
}
} /// <summary>
/// AES加密
/// </summary>
/// <returns></returns>
protected static string AesEncrypt(string str)
{
return str;
} /// <summary>
/// AES解密
/// </summary>
/// <returns></returns>
protected static string DesEncrypt(string str)
{
return str;
} public class YSResultMsg
{
public string requestID { get; set; }
public string code { get; set; }
public string msg { get; set; }
public object cipher { get; set; }
}
} /// <summary>
/// 停车场功能
/// </summary>
public class ParkingLotsInfoDto
{
public int Num { get; set; }
public List<ParkingLotsInfoListDto> ParkingLotsInfoList { get; set; } public class ParkingLotsInfoListDto
{
public string ParkingLotName { get; set; }
public string ParkingLotID { get; set; }
public string TotalParkingNum { get; set; }
public string RemainParkingNum { get; set; }
public string RemainOpenParkingNum { get; set; }
}
}

  

C#泛型接口请求封装类的更多相关文章

  1. C# http Get/POST请求封装类

    C#HttpHelper官方产品发布与源码下载---苏飞版 http://www.sufeinet.com/thread-3-1-1.html 在C#用HttpWebRequest中发送GET/HTT ...

  2. ios开发之--使用AFNetWorking 3.1.0 ,简单的请求封装类

    从苹果系统自带的请求类,到ASIHttpRequest第三方请求类,再到AFNetWorking第三方请求类,目前只要牵扯到数据请求,基本上都是用AFN,所以,这里纯粹是记录下: hRequestTo ...

  3. PHP 的一款http请求封装类

    <?php namespace hisi; class Http { protected static $userAgent = [ 'Mozilla/5.0 (Windows NT 6.1; ...

  4. HTTP重定向服务器

    程序基本流程如下: 代码组织结构如下: HTTP重定向服务主线程: package com.server; import java.io.IOException; import java.net.Se ...

  5. 关于HttpClient,HttpURLConnection,OkHttp的用法

    1 HttpClient入门实例 1.1发送get请求 /** * HttpClient发送get请求 * @param url 请求地址 * @return * @throws IOExceptio ...

  6. 一个简单可参考的API网关架构设计

    网关一词较早出现在网络设备里面,比如两个相互独立的局域网段之间通过路由器或者桥接设备进行通信, 这中间的路由或者桥接设备我们称之为网关. 相应的 API 网关将各系统对外暴露的服务聚合起来,所有要调用 ...

  7. HttpUrlConnection使用详解--转

    http://blog.csdn.net/fightingXia/article/details/71775516 一,HttpURLconnection的介绍 在Android开发中网络请求是最常用 ...

  8. android开源项目:图片下载缓存库picasso

    picasso是Square公司开源的一个Android图形缓存库,地址http://square.github.io/picasso/,可以实现图片下载和缓存功能. picasso有如下特性: 在a ...

  9. Spring Boot:实现MyBatis分页

    综合概述 想必大家都有过这样的体验,在使用Mybatis时,最头痛的就是写分页了,需要先写一个查询count的select语句,然后再写一个真正分页查询的语句,当查询条件多了之后,会发现真的不想花双倍 ...

  10. 一次使用自定义 Http Header 引发的血案

    一次使用自定义 Http Header 引发的血案 HttpClient Http Header 自定义 nginx 不转发  起因 最近在整理我们产品的 OpenAPI Demo (Python.C ...

随机推荐

  1. MySQL进阶实战2,那些年学过的事务

    @ 目录 一.MySQL服务器逻辑架构 二.并发控制 1.读写锁 2.锁粒度 3.表锁 4.行级锁 三.事务 1.原子性(atomicity) 2.一致性(consistency) 3.隔离性(iso ...

  2. 兼容IE全版本及所有市面浏览器的网页变黑白处理方式

    大家应该有发现最近几天不少网站变成了黑白色,在哀悼日时,很多网站都需要全站变成黑白配色,今天对这个实现的技术做了一些探索性了解,在此进行一个记录分享. 使用的样式部分:下面的css部分想必大家应该都可 ...

  3. 过压保护芯片,高输入电压(OVP)

    PW2606是一种前端过电压和过电流保护装置.它实现了广泛的输入电压范围从2.5V到40V.过电压阈值可在外部编程或设置为内部默认设置.集成功率路径nFET开关的超低电阻确保了更好的性能电池充电系统应 ...

  4. 全都会!预测蛋白质标注!创建讲义!解释数学公式!最懂科学的智能NLP模型Galactica尝鲜 ⛵

    作者:韩信子@ShowMeAI 机器学习实战系列:https://www.showmeai.tech/tutorials/41 深度学习实战系列:https://www.showmeai.tech/t ...

  5. Ubuntu 22.04 搭建K8s集群

    目录 1. 虚拟机基础配置 配置静态ip 设置主机名 设置hosts 安装ssh 2. Ubuntu系统设置 禁用swap 修改内核参数 3. 安装containerd 4. 安装Kubernetes ...

  6. 【LeetCode】剑指 Offer 30. 包含min函数的栈

    题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1). 思路 最初看到O(1)复杂度的时候,就想 ...

  7. 《HTTP权威指南》– 2.HTTP报文与URL资源

    URL与资源: 大多数URL方案的URL语法都建立在这个由9部分构成的通用格式上. 方案: 访问服务器以获取资源要使用哪种协议 用户: 某些方案访问资源时需要的用户名 密码: 用户名后面可能包含的密码 ...

  8. 使用.NET开发搭建OpenAI模型的中间服务端

    前言:前不久微信上大家玩ChatGPT聊天机器人玩的不亦乐乎:不过随着ChatGPT被封杀,所以用微信聊天机器人有可能导致封号的风险.那如果自己不想每次都去OpenAI官网上进行对话[PS:官网上面聊 ...

  9. pytest --maxfail=num 运行指令

    ----maxfail=num 表示用例失败总数等于num 时停止运行 注意点:---maxfail=num中间不要存在空格

  10. tempdb大量闩锁等待问题分析

    背景 客户业务系统升级后,高峰期运行缓慢,在SQL专家云上看到数据库出现严重等待,需要分析原因并紧急处理. 现象 登录到SQL专家云中,进入实时可视化页面,在活动会话里面看到有大量资源等待的会话.   ...