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. Django ValueError: HTTP status code must be an integer from 100 to 599.

    程序执行后一直提示ValueError: HTTP status code must be an integer from 100 to 599. 遍历代码一切正常,然后开始调试代码,找出获取数据有问 ...

  2. vue elementui弹框内 富文本编辑器的使用,及踩坑

    最近vue项目中遇到弹框内使用富文本编辑器,遇到最大的问题是,在打开弹框后才能创建富文本编辑器,并且只能创建一次,多次点击弹框,报错: Error in v-on handler: "Err ...

  3. C#代码扫描工具Sonarqube + Win10+SqlServer2017

    在之前的公司, 看到有用过代码扫描工具, 扫描C#代码, 最近公司也有考虑做这个,于是我便独自研究了一下,这里给大家做个分享 网上找了很多资料, 主要有以下问题: 1. Sonarqube用的是 旧版 ...

  4. 你的 GitHub 年度报告「GitHub 热点速览 v.22.52」

    辞旧迎新的日子,又是年度报告满天飞的时候.GitHub 也不落其他平台之后,推出了用户 GitHub Contributions 报告.不知道,今年的你是不是比去年搬了更多的砖呢?在本期的 News ...

  5. [深度学习] 基于切片辅助超推理库SAHI优化小目标识别

    对象检测是迄今为止计算机视觉中最重要的应用领域.然而,小物体的检测和大图像的推理仍然是实际使用中的主要问题,这是因为小目标物体有效特征少,覆盖范围少.小目标物体的定义通常有两种方式.一种是绝对尺度定义 ...

  6. Web初级——CSS3

    CSS Cascding Style Sheet(层叠级联样式表) 1.前言 1.1CSS优势 内容和表现分离 可以实现CSS代码复用 利用SEO,容易被搜索引擎收录 1.2CSS导入方式 <! ...

  7. Java学习笔记:2022年1月10日

    Java学习笔记:2022年1月10日 ​ 摘要:这篇笔记主要记录了学习<Java核心技术 卷一>的第四章时的一些心得,主要阐述了对象与类这一部分的内容.需要注意的是,这一章的内容需要精心 ...

  8. 2022 CSP-J 游记

    Day − ∞ -\infty −∞ 在家里跟父母约定 "只要csp-j一等奖,手机随你挑!" 对于一个没有手机的初中生废物,这个约定显然勾引了我 刷题! 刷题! 再刷! 刷废-- ...

  9. (14)go-micro微服务服务层Handle开发

    目录 一 Handle层开发功能说明 需要完成的服务开发功能: 从哪找需要开发的功能 二 代码编写 三 最后 一 Handle层开发功能说明 需要完成的服务开发功能: 登录 注册 查询用户信息 修改信 ...

  10. File类获取功能的方法-File类判断功能的方法

    File类获取功能的方法 获取功能的方法 public string getAbsolutePath()∶返回此File的绝对路径名字符串. public string getPath() ︰将此Fi ...