.net 调用API并解析Json数据方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using Jyson.IZhanShi.Model.WebApiModel; namespace Jyson.IZhanShi.WinDesktop.Utility
{
public class OperateHttp
{
private OperateHttp() { }
/// <summary>
/// 单例模式
/// </summary>
private static OperateHttp _instance = null;
public static OperateHttp Instance()
{
if (_instance == null)
{
_instance = new OperateHttp();
}
return _instance;
} static HttpClient _httpClient;
public HttpClient httpClient
{
get
{
if (_httpClient == null)
_httpClient = new HttpClient();
return _httpClient;
}
set { _httpClient = value; }
}
/// <summary>
/// 餐厅ID
/// </summary>
public int RestaurantID { get; set; }
public string RestaurantName { get; set; }
public string RestaurantSessionKey { get; set; } #region --Get/Post/Put/Delete 方法操作
/// <summary>
/// Get方式获取数据
/// </summary>
/// <param name="httpUrl"></param>
/// <returns></returns>
public JsonData GetResult(string httpUrl)
{
HttpResponseMessage hrm = httpClient.GetAsync(httpUrl).Result;
JsonData data = hrm.Content.ReadAsAsync<JsonData>().Result;
return data;
}
/// <summary>
/// Get 异步方式获取数据
/// </summary>
/// <param name="httpUrl"></param>
/// <returns></returns>
//public async Task<JsonData> GetAsyncResult(string httpUrl)
//{
// HttpResponseMessage hrm = await httpClient.GetAsync(httpUrl).ConfigureAwait(false);
// JsonData data = hrm.Content.ReadAsAsync<JsonData>().Result;
// return data;
//}
/// <summary>
/// Post 方式传递数据
/// </summary>
/// <param name="postModel"></param>
/// <param name="httpUrl"></param>
/// <returns></returns>
public JsonData PostResult(string httpUrl, object postModel)
{
HttpResponseMessage hrm = httpClient.PostAsJsonAsync(httpUrl, postModel).Result;
JsonData data = hrm.Content.ReadAsAsync<JsonData>().Result;
return data;
}
/// <summary>
/// Post 异步方式传递数据
/// </summary>
/// <param name="httpUrl"></param>
/// <param name="postModel"></param>
/// <returns></returns>
//public async Task<JsonData> PostAsyncResult(string httpUrl, object postModel)
//{
// var hrm = await httpClient.PostAsJsonAsync(httpUrl, postModel).ConfigureAwait(false);
// JsonData data = hrm.Content.ReadAsAsync<JsonData>().Result;
// return data;
//}
/// <summary>
/// Put 更新方式传递数据
/// </summary>
/// <param name="postModel"></param>
/// <param name="httpUrl"></param>
/// <returns></returns>
public JsonData PutResult(string httpUrl, object postModel)
{
HttpResponseMessage hrm = httpClient.PutAsJsonAsync(httpUrl, postModel).Result;
JsonData data = hrm.Content.ReadAsAsync<JsonData>().Result;
return data;
}
/// <summary>
/// Delete 删除方式传递数据
/// </summary>
/// <param name="httpUrl"></param>
/// <returns></returns>
public JsonData DeleteResult(string httpUrl)
{
HttpResponseMessage hrm = httpClient.DeleteAsync(httpUrl).Result;
JsonData data = hrm.Content.ReadAsAsync<JsonData>().Result;
return data;
}
#endregion #region 菜单操作
/// <summary>
/// 获取该店铺所有菜单列表
/// </summary>
/// <returns></returns>
public List<WMFoodMenu> GetFoodMenuList(string httpUrl)
{
JsonData prod = OperateHttp.Instance().GetResult(httpUrl);
var model = JsonConvert.DeserializeObject<List<WMFoodMenu>>(prod.data.ToString());
return model;
} /// <summary>
/// 获取菜单类别
/// </summary>
/// <returns></returns>
public List<WMFoodMenuCategory> GetFoodMenuCategory()
{
string httpUrl = HttpUrl.FoodMenuCategoryUrl + OperateHttp.Instance().RestaurantID;
JsonData prod = OperateHttp.Instance().GetResult(httpUrl);
var model = JsonConvert.DeserializeObject<List<WMFoodMenuCategory>>(prod.data.ToString());
return model;
}
/// <summary>
/// 获取菜单单个信息
/// </summary>
/// <returns></returns>
public WMFoodMenu GetFoodMenu(int foodMenuID)
{
string httpUrl = HttpUrl.FoodMenuOneUrl + foodMenuID;
JsonData prod = OperateHttp.Instance().GetResult(httpUrl);
var model = JsonConvert.DeserializeObject<WMFoodMenu>(prod.data.ToString());
return model;
}
/// <summary>
/// 更新菜单
/// </summary>
/// <returns></returns>
public bool PutFoodMenu(int foodMenuID, WMFoodMenu model)
{
string httpUrl = HttpUrl.FoodMenuUrl + OperateHttp.Instance().RestaurantID;
JsonData data = OperateHttp.Instance().PutResult(httpUrl, model);
if (data.errorCode == (int)Model.Enum.ApiErrorEnum.Success && !string.IsNullOrEmpty(data.errorMsg))
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// 更新菜单状态
/// </summary>
/// <returns></returns>
public bool PutIsSell(int foodMenuID, WMFoodMenuIsSell model)
{
string httpUrl = HttpUrl.FoodMenuOneUrl + foodMenuID.ToString();
JsonData data = OperateHttp.Instance().PutResult(httpUrl, model);
if (data.errorCode == (int)Model.Enum.ApiErrorEnum.Success && !string.IsNullOrEmpty(data.errorMsg))
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// 删除菜单
/// </summary>
/// <returns></returns>
public bool DeleteFoodMenu(int foodMenuID)
{
string httpUrl = HttpUrl.FoodMenuOneUrl + foodMenuID.ToString();
JsonData data = OperateHttp.Instance().DeleteResult(httpUrl);
if (data.errorCode == (int)Model.Enum.ApiErrorEnum.Success && !string.IsNullOrEmpty(data.errorMsg))
{
return true;
}
else
{
return false;
}
}
#endregion /// <summary>
/// 获取订单列表
/// </summary>
/// <param name="httpUrl"></param>
/// <returns></returns>
public List<WMOrder> GetOrder(string httpUrl)
{
JsonData prod = OperateHttp.Instance().GetResult(httpUrl);
var model = JsonConvert.DeserializeObject<List<WMOrder>>(prod.data.ToString());
return model;
} /// <summary>
/// 获取订单列表
/// </summary>
/// <param name="httpUrl"></param>
/// <returns></returns>
public WMOrderDetail GetOrderDetail(int orderID)
{
string httpUrl = HttpUrl.OrderDetailUrl + orderID.ToString();
JsonData prod = OperateHttp.Instance().GetResult(httpUrl);
var model = JsonConvert.DeserializeObject<WMOrderDetail>(prod.data.ToString());
return model;
}
/// <summary>
/// 取消订单
/// </summary>
/// <param name="orderID">订单ID</param>
/// <returns></returns>
public bool DeleteOrder(int orderID)
{
string httpUrl = HttpUrl.OrderUrl + orderID.ToString();
JsonData data = OperateHttp.Instance().DeleteResult(httpUrl);
if (data.errorCode == (int)Model.Enum.ApiErrorEnum.Success && !string.IsNullOrEmpty(data.errorMsg))
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// 订单打印
/// </summary>
/// <param name="httpUrl"></param>
/// <returns></returns>
public string PutOrderPrint(int orderID)
{
string httpUrl = HttpUrl.OrderPrintUrl + orderID.ToString();
JsonData resultData = OperateHttp.Instance().PutResult(httpUrl, null);
if (resultData.errorCode == (int)Model.Enum.ApiErrorEnum.Success && !string.IsNullOrEmpty(resultData.errorMsg))
{
return "Success";
}
else
{
return resultData.data.ToString();
}
}
}
}
.net 调用API并解析Json数据方法的更多相关文章
- Java创建和解析Json数据方法(五)——Google Gson包的使用
(五)Google Gson包的使用 1.简介 Gson包中,使用最多的是Gson类的toJson()和fromJson()方法: ①toJson():将java对象转化为json数据 ...
- Java创建和解析Json数据方法(二)——org.json包的使用
(二)org.json包的使用 1.简介 工具包org.json.jar,是一个轻量级的,JAVA下的json构造和解析工具包,它还包含JSON与XML, HTTP headers, Cookie ...
- Java创建和解析Json数据方法——org.json包的使用(转)
org.json包的使用 1.简介 工具包org.json.jar,是一个轻量级的,JAVA下的json构造和解析工具包,它还包含JSON与XML, HTTP headers, Cookies, ...
- Java创建和解析Json数据方法(四)——json-lib包的使用
(四)json-lib包的使用 既然json-lib包比org.json包重量级,那么json-lib包肯定有很多org.json包没有的类和方法,这篇笔记简单记录json-lib包中 ...
- Java创建和解析Json数据方法(三)——json-lib包的使用
(三)json-lib包的使用 这篇笔记主要介绍json-lib包的创建和解析json数据的方式,主要是的JSONObject.JSONArray和Java对象:beans, maps ...
- 使用Python解析JSON数据的基本方法
这篇文章主要介绍了使用Python解析JSON数据的基本方法,是Python入门学习中的基础知识,需要的朋友可以参考下: ----------------------------------- ...
- 用jquery解析JSON数据的方法以及字符串转换成json的3种方法
用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是 json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用JSONObject ...
- Android中使用Gson解析JSON数据的两种方法
Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率;本文将介绍两种方法解析JSON数据,需要的朋友可以参考下 Json是一种类似于XML的通用数据交换格式,具有比XML更高的 ...
- Java构造和解析Json数据的两种方法详解二
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Jso ...
随机推荐
- 百度前端学院js课堂作业合集+分析(更新中...)
第一课:简陋的登录框 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- js 判断数组重复元素以及重复的个数
知识点: .sort()方法用于对数组元素排序,并返回数组. var _arr = ['旅行箱', '旅行箱', '小米', '大米']; var _res = []; // _arr.sort(); ...
- Python拷贝文件脚本
author : headsen chen date : 2018-12-06 17:56:58 copy_file.py #!/usr/bin/env python from sys import ...
- matlab中 数据保留有效位数
可以使用round函数 ,这函数原本功能是四舍五入 比如: >> A = 0.0326465;>> B = round(A*1000)/1000 B = 0.0330
- [工具] Snipaste
https://zh.snipaste.com/ Snipaste 是一个简单但强大的截图工具,也可以让你将截图贴回到屏幕上! 下载并打开 Snipaste,按下 F1 来开始截图, 选择“复制到剪贴 ...
- RabbitMQ服务端配置详解(转自:http://www.cnblogs.com/zhen-rh/p/6884297.html)
RabbitMQ支持三种配置方式: 1) 读取环境变量中配置, 这包括shell中环境变量和rabbitmq-env.conf/rabbitmq-env-conf.bat文件中配置的环境变量 可配置如 ...
- WEB前端开发规范文档[转]
为新项目写的一份规范文档, 分享给大家. 我想前端开发过程中, 无论是团队开发, 还是单兵做站, 有一份开发文档做规范, 对开发工作都是很有益的. 本文档由本人编写, 部分意见来源于网络, 以此感谢, ...
- ELKStack
ELKStack简介 对于日志来说,最常见的需求就是收集.存储.查询.展示,开源社区正好有相对应的开源项目:logstash(收集).elasticsearch(存储+搜索).kiban ...
- ZOJ 3780 - Paint the Grid Again - [模拟][第11届浙江省赛E题]
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3780 Time Limit: 2 Seconds Me ...
- Django运算符表达式
在html页面中,加入运算符表达式,进行逻辑判断.可参考手册.我用的Django是2.1版本 view.py中的代码: from django.shortcuts import render from ...