.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 ...
随机推荐
- List的五种去重方式
//set集合去重,不改变原有的顺序 public static void pastLeep1(List<String> list){ System.out.println("l ...
- create-react-app项目中的eslint
"no-multi-spaces": 1, //禁止多个空格 "jsx-quotes": 1, //此规则强制在JSX属性中一致使用双引号或单引号 " ...
- linux下MySQL安装及设置(二)
MySQL二进制分发包安装 去MySql官网下MySQL classic版mysql-5.6.30-osx10.11-x86_64.tar.gz http://dev.mysql.com/downl ...
- wget 无法建立ssl连接 [ERROR: certificate common name ?..ssl.fastly.net?.doesn?. match requested host name ?.ache.ruby-lang.org?. To connect to cache.ruby-lang.org insecurely, use ?.-no-check-certificate?]
通过wget下载文件,报错 [root@Redmine-186 opt]# wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.6.tar.g ...
- Hive FUNCTIONS函数
hive> SHOW FUNCTIONS; ! != % & * + - / < <= <=> <> = == > >= ^ abs ac ...
- Bazel构建工具的安装
官方Doc:https://docs.bazel.build/versions/master/install-ubuntu.html 使用Bazel定制的APT存储库 (recommended) 1. ...
- POJ 3280 - Cheapest Palindrome - [区间DP]
题目链接:http://poj.org/problem?id=3280 Time Limit: 2000MS Memory Limit: 65536K Description Keeping trac ...
- ionic 相关问题解决办法记录
1.npm无法安装模块 报code E400错误 解决办法: 删除npmrc文件. 注意:不是nodejs安装目录npm模块下的那个npmrc文件,而是在C:\Users\{账户}\下的.npmrc文 ...
- JS "eval智能" 工厂模式
<script> var Shop = function () { this.name = function () { document.write("商店的名字 <br/ ...
- AWTK 全称为 Toolkit AnyWhere,是 ZLG 倾心打造的一套基于 C 语言开发的 GUI 框架(三平台+2个手机平台+嵌入式)
最终目标: 支持开发嵌入式软件. 支持开发Linux应用程序. 支持开发MacOS应用程序. 支持开发Windows应用程序. 支持开发Android应用程序. 支持开发iOS应用程序. 支持开发2D ...