.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 ...
随机推荐
- Java 反编译工具 —— JAD 的下载地址(Windows版/Linux版/Mac OS 版)
Java 反编译工具 —— JAD 的下载地址. 各种版本哦! Windows版,Linux版,Mac OS 版,等等 下载地址: http://varaneckas.com/jad/
- 调用TerminateProcess是无法触发DLL_PROCESS_DETACH的
当应用程序中调用TerminateProcess函数,对于在DllMain函数中处理DLL_PROCESS_DETACH的额外代码操作是无法被执行的.比如:释放资源.数据持久化等.
- shell脚本技巧记录
2014/4/9 shell脚本变量处理: ${varible##*string} //从左向右截取最后一个string后的字符串 ${varible#*string} //从左向右截取第一个stri ...
- 静态时序分析基础STA
静态时序分析SAT 1. 背景 静态时序分析的前提就是设计者先提出要求,然后时序分析工具才会根据特定的时序模型进行分析,给出正确是时序报告. 进行静态时序分析,主要目的就是为了提高系统工作主频 ...
- locate命令的使用
使用locate命令,遇到了这样的情况:当前目录下有一个文件,而使用这个命令时却查找不到这个文件,上网查了一下,找到了原因,就在下面. 1. find find是最常见和最强大的查找命令,你可以用它找 ...
- 第一个maven项目
1.新建maven project 注意:勾上create a new simple project 2.填写相关信息, Grounp id为大项目名字,Artifact id为小项目的名字.注意:P ...
- 找到多个与名为“xxx”的控制器匹配的类型。如果为此请求(“{controller}/{action}/{id}”)提供服务的路由没有指定命名空间以搜索与此请求相匹配的控制器,则会发生这种情况。
一次在建MVC 项目的进行开发的时候,因为后来想到了一个更好的项目名称,就把 Web项目的名称重命名 改了, 然后 程序集名称,默认命名空间,都改成新的了,刚建立的项目本身也不大,运行起来,总是报 & ...
- spring boot+mybatis 系列
https://blog.csdn.net/linxingliang/article/details/52324937 https://www.cnblogs.com/a8457013/p/90749 ...
- C++ polymorphism Virtual Function 多态 虚函数
Polymorphism in C++ https://www.tutorialspoint.com/cplusplus/cpp_polymorphism.htm https://github.com ...
- Monkey and Banana---hdu1069(dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1069 题意就是给你n种长方体每种类型不限制个数,然后我们把它们一个个堆起来,并且要满足下面的要比上面的 ...