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数据方法的更多相关文章

  1. Java创建和解析Json数据方法(五)——Google Gson包的使用

    (五)Google Gson包的使用 1.简介 Gson包中,使用最多的是Gson类的toJson()和fromJson()方法:         ①toJson():将java对象转化为json数据 ...

  2. Java创建和解析Json数据方法(二)——org.json包的使用

    (二)org.json包的使用 1.简介   工具包org.json.jar,是一个轻量级的,JAVA下的json构造和解析工具包,它还包含JSON与XML, HTTP headers, Cookie ...

  3. Java创建和解析Json数据方法——org.json包的使用(转)

    org.json包的使用 1.简介   工具包org.json.jar,是一个轻量级的,JAVA下的json构造和解析工具包,它还包含JSON与XML, HTTP headers, Cookies, ...

  4. Java创建和解析Json数据方法(四)——json-lib包的使用

    (四)json-lib包的使用         既然json-lib包比org.json包重量级,那么json-lib包肯定有很多org.json包没有的类和方法,这篇笔记简单记录json-lib包中 ...

  5. Java创建和解析Json数据方法(三)——json-lib包的使用

    (三)json-lib包的使用         这篇笔记主要介绍json-lib包的创建和解析json数据的方式,主要是的JSONObject.JSONArray和Java对象:beans, maps ...

  6. 使用Python解析JSON数据的基本方法

    这篇文章主要介绍了使用Python解析JSON数据的基本方法,是Python入门学习中的基础知识,需要的朋友可以参考下:     ----------------------------------- ...

  7. 用jquery解析JSON数据的方法以及字符串转换成json的3种方法

    用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是 json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用JSONObject ...

  8. Android中使用Gson解析JSON数据的两种方法

    Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率;本文将介绍两种方法解析JSON数据,需要的朋友可以参考下   Json是一种类似于XML的通用数据交换格式,具有比XML更高的 ...

  9. Java构造和解析Json数据的两种方法详解二

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Jso ...

随机推荐

  1. 原生js(三)

    客户端js的时间线: 1.web浏览器创建Document对象,开始解析html和文本.生成Element对象和Text节点添加到文档中.这个阶段的document.readystate==" ...

  2. Python GUI编程之WxPython

    https://en.wikipedia.org/wiki/WxPython 官网: Overview of wxPython: https://wxpython.org/pages/overview ...

  3. bs-loading

    根据bootstrap的modal来显示loading动效. 核心内容: 1.图片转base64方法: // 图片压缩-start function run(input_file,get_data){ ...

  4. Sencha Cmd 5.0.1.231 是坑爹货

    Sencha Cmd 5.0.1.231相比之前的版本有了很大的变动,存在很多坑爹之处,个人建议不要升级到这个版本,如果已经升级了的就卸载了还原到以前的版本吧. 历史版本下载地址:http://cdn ...

  5. openvpn 负载均衡方案

    这些方案的前提是,vpnserver的key都是一样的.方案1在openvpn客户端设两个配置文件,我们自己手动去连接去选择方案2在openvpn 的配置文件里面加个随机参数remote 8.8.8. ...

  6. HDU 1455 Sticks(经典剪枝)

    Sticks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  7. 关于数据库DB负载均衡的初步研究(二)

    负载均衡: 是什么:有一组服务器由路由器联系在一起,各个节点相互协作,共同负载,均衡压力. 实现原理:应用程序与DB之间有个中央控制台服务器,根据负载均衡策略决定访问哪一台DB服务器. DB服务器:读 ...

  8. Centos 7.x系统安装后的初始化配置

    1.配置IP.网关,编辑/etc/sysconfig/network-scripts/ifcfg-eno16777736 TYPE=Ethernet BOOTPROTO=none //默认为dhcp ...

  9. myeclipse2016破解过程

    1.安装myeclipse2016 CI 7就不介绍了..只需要注意最后安装完成后取消对号.不要立即运行myeclipse2016. 2.下载破解版工具. 到以下网址下载破解工具:http://dow ...

  10. unity3d的优化场景技术LOD+IOC

    一.unity3d的优化场景技术  LOD+IOC 遮挡剔除(occlusion culling)其实就是在摄像机范围内的物体才被渲染出来,没有在视野范围内的,统统关掉渲染,这样能让性能大大提高. I ...