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. Java常用开发文档及工具

    一.实用工具/网站 1.PHP中文网:https://www.php.cn/ 2.Json工具:http://www.bejson.com/ 3.IT大哥导航:https://itdage.com/ ...

  2. 【数据库】E-R图相关知识、手动自动绘制方法及工具推荐

    一.知识 1.介绍 E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体.属性和联系的方法,用来描述现实世界的概念模型. 2.组成 (1)实体(Entit ...

  3. 【每日一题】【链表.next.next判空条件】141. 环形链表/NC4 判断链表中是否有环-211120/220123

    给你一个链表的头节点 head ,判断链表中是否有环. 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环. 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链 ...

  4. 为什么推荐Kestrel作为网络开发框架

    为什么推荐Kestrel 网络框架千千万万,在dotnet平台,我们可以直接手撸Socket,也可以基于dotnetty来开发,或者选择某些第三方类似于dotnetty的网络库,为何我要推荐Kestr ...

  5. Leanote蚂蚁笔记-私人云笔记服务器搭建

    title: Leanote蚂蚁笔记-私人云笔记服务器搭建 date: 2020-02-22 21:53:24 categories: - [IT,技术] - [IT,软件,程序] - [IT,软件, ...

  6. JS如何返回异步调用的结果?

    这个问题作者认为是所有从后端转向前端开发的程序员,都会遇到的第一问题.JS前端编程与后端编程最大的不同,就是它的异步机制,同时这也是它的核心机制. 为了更好地说明如何返回异步调用的结果,先看三个尝试异 ...

  7. SimpleMemory使用

    官方文档: 简介 - Document (bndong.github.io) Github资源链接: BNDong/Cnblogs-Theme-SimpleMemory: Cnblogs theme ...

  8. emqtt-bench

    安装 安装环境:Centos7 安装包:emqtt-bench-0.4.6-alpha.2-centos7-amd64.tar.gz 建议使用已编译好的发行包进行安装,源码编译已踩坑. # 创建存放目 ...

  9. [数据结构]普里姆(Prim)算法生成最小生成树

    前提介绍:最小生成树概念 一个连通图的生成树是图的极小连通子图,它包含图中的所有定点,并且只含尽可能少的边,这意味着对于生成树来说,就砍去使生成树变成非连通图:若给它怎家一条边就会形成图中的一条回路. ...

  10. Zabbix与乐维监控对比分析(八)——其他功能篇

    前面我们详细介绍了Zabbix与乐维监控的架构与性能.Agent管理.自动发现.权限管理.对象管理.告警管理.可视化.图形图表及网络功能方面的对比分析,接下来我们将对二者其他功能进行对比分析. 本篇是 ...