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. 目标检测模型的评价标准-AP与mAP

    目录 目录 目录 前言 一,精确率.召回率与F1 1.1,准确率 1.2,精确率.召回率 1.3,F1 分数 1.4,PR 曲线 1.4.1,如何理解 P-R 曲线 1.5,ROC 曲线与 AUC 面 ...

  2. Idea中Git的常用操作及可能存在的问题

    一.使用 1.从git上下载项目 (1)默认branch下载(pull) (2)指定branch下载 (3)克隆远程仓库到本地(git clone) git clone https://github. ...

  3. 【软考-中级-其他】03、NoSQL和云计算

    其他 NoSQL概述 分类 文档存储数据库:MongoDB 采用BSON格式完成存储数据和网络数据交换 BSON格式:JSON的二进制编码格式 逻辑结构包括:数据库.集合(相当于关系数据库的表).文档 ...

  4. Redis Zset实现统计模块

    1. 背景 公司有一个配置中心系统,使用MySQL存储了大量的配置,但现在不清楚哪些配置正在线上使用,哪些已经废弃了,所以需要实现一个统计模块,实现以下两个功能: 查看总体配置的数量以及活跃的数量 查 ...

  5. C# 操作IIS加强版(添加,删除,启动,暂停网站,默认页,绑定信息)

    C# 操作IIS加强版(添加,删除,启动,暂停网站,默认页,绑定信息) 主要功能如下 在本机的IIS创建Web网站 删除网站包括应用程序池 删除应用程序池 添加默认文档 删除默认文档 添加虚拟目录 删 ...

  6. GOCVHelper图像处理算法库实例整编

        GOCVHelper主要包含图像处理.图像增强和基础文件处理三个部分.由于前两个部分较具有通用性,而且我在不同项目中都进行了反复使用,为了进一步说明类库内容,这里反过来从项目角度出发,对现有的 ...

  7. SpringBoot基础学习笔记

    Springboot框架: springboot官网参考 Sringboot是整合spring技术栈的一站式框架,其简化配置,实现了自动化配置 Springboot基础结构: 1.pom.xml文件: ...

  8. 【转载】EXCEL VBA 工作簿(表)合并拆分

    一.合并工作簿 Sub 合并工作簿()    Application.ScreenUpdating = False     myfile = Dir(ThisWorkbook.Path & & ...

  9. [seaborn] seaborn学习笔记11-绘图实例(3) Drawing example(3)

    11 绘图实例(3) Drawing example(3)(代码下载) 本文主要讲述seaborn官网相关函数绘图实例.具体内容有: Plotting a diagonal correlation m ...

  10. JAVA中使用最广泛的本地缓存?Ehcache的自信从何而来3 —— 本地缓存变身分布式集群缓存,打破本地缓存天花板

    大家好,又见面了. 本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容,将会通过系列专题,讲清楚缓存的方方面面.如果感兴趣,欢迎关注以获取后续更新. 上一篇文章中,我们知晓了如何在项目中通 ...