C# -WebAPIOperator.cs
说明:一个用C#编写的WebAPI操作类,只写了Get Post 部分。
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks; namespace Assets.Scripts.Models
{
class WebAPIOperator
{
static string ip = ConfigMan.ReadNode("ServerSet", "ip");
static string port = ConfigMan.ReadNode("ServerSet", "port");
static string baseUri = "http://" + ip + ":" + port;
/// <summary>
/// 服务器通信状态
/// </summary>
public static bool NetState = true; public static HttpClient httpClient; #region CTOR
private WebAPIOperator()
{
httpClient.BaseAddress = new Uri(baseUri);
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("Application/json"));
}
#endregion #region Async Task
public static async Task RunAsync()
{
httpClient.BaseAddress = new Uri(baseUri);
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("Application/json")); try
{
//执行API任务
}
catch (Exception)
{
throw;
}
}
#endregion #region init
public static void initAPI()
{
ip = ConfigMan.ReadNode("ServerSet", "ip");
port = ConfigMan.ReadNode("ServerSet", "port");
baseUri = "http://" + ip + ":" + port;
httpClient = new HttpClient();
httpClient.BaseAddress = new Uri(baseUri);
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("Application/json"));
//系统默认超时100s
//https://docs.microsoft.com/zh-cn/dotnet/api/system.net.http.httpclient.timeout?view=netframework-4.8#System_Net_Http_HttpClient_Timeout
//httpClient.Timeout = TimeSpan.FromMinutes(1);//超时60s
}
#endregion #region Get
/// <summary>
/// WebAPI Get方法,返回JObject
/// </summary>
/// <param name="uri">带参数的uri</param>
/// <returns></returns>
public static async Task<JObject> GetAsync(string uri)
{
JObject o = null;
try
{
HttpResponseMessage response = new HttpResponseMessage();
response = await httpClient.GetAsync(uri);
if (response != null && response.IsSuccessStatusCode)
{
string jsonStr = await response.Content.ReadAsStringAsync();//获取JSON字符串
JObject jobj = JObject.Parse(jsonStr);//转换为JObject
//o=...
//保存数据到文件等
//List_Screen.Items.Add(jsonStr);
o = jobj;
NetState = true;
}
else
{
NetState = false;
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
//更新网络状态
NetState = false;
//Log4NetHelper.Error("网络掉线", ex);
}
return o;
}
/// <summary>
/// WebAPI GET方法,返回string json,用于反序列化
/// </summary>
/// <param name="uri"></param>
/// <returns></returns>
public static async Task<string> GetAsync_uri(string uri)
{
string jsonStr = "";
try
{
HttpResponseMessage response = await httpClient.GetAsync(uri);
if (response.IsSuccessStatusCode)
{
jsonStr = await response.Content.ReadAsStringAsync();//获取JSON字符串
//JObject jobj = JObject.Parse(jsonStr);//转换为JObject
//o=...
//保存数据到文件等
//List_Screen.Items.Add(jsonStr);
//o = jobj;
}
NetState = true;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
//更新网络状态
NetState = false;
//RoutedEventArgs args = new RoutedEventArgs(UpdateNetStateEvent);
//new ImageButton().RaiseEvent(args);
//Log4NetHelper.Error("网络掉线", ex);
} return jsonStr;
}
#endregion #region POST
public static async Task<string> PostAsync(string uri, Object obj)
{
string o = "";
string jsonStr = JsonConvert.SerializeObject(obj);
HttpResponseMessage response = await httpClient.PostAsJsonAsync<Object>(uri, obj);
//response.EnsureSuccessStatusCode();//响应失败时,用于触发异常
//return response.Headers.Location;
if (response.IsSuccessStatusCode)
{
//string jsonStr = await response.Content.ReadAsStringAsync();//获取JSON字符串
//JObject jobj = JObject.Parse(jsonStr);
//o = jobj;
//o = await response.Content.ReadAsAsync<object>();
o = await response.Content.ReadAsStringAsync();
}
return o;
}
public static async Task<object> PostAsync(string uri, string userName, string password)
{
Object o = null;
HttpContent httpContent = new StringContent("loginName=" + userName + "&password=" + password);
httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");
HttpResponseMessage response = await httpClient.PostAsync(uri, httpContent);
if (response.IsSuccessStatusCode)
{
string jsonStr = await response.Content.ReadAsStringAsync();//获取JSON字符串
JObject jobj = JObject.Parse(jsonStr);
o = jobj;
}
return o;
}
#endregion #region PUT
//static async Task<Object> PutAsync(string uri, Object o)
//{
// HttpResponseMessage response = await httpClient.PutAsJsonAsync<Object>(uri + "//id=" + 123, o);
// response.EnsureSuccessStatusCode();
// o = await response.Content.ReadAsAsync<Object>();
// return o;
}
#endregion #region Delete
//static async Task<HttpStatusCode> DeleteAsync(string uri, string id)
//{
// HttpResponseMessage response = await httpClient.DeleteAsync(uri + "//" + id);
// return response.StatusCode;
//}
#endregion }
C# -WebAPIOperator.cs的更多相关文章
- [C#] 剖析 AssemblyInfo.cs - 了解常用的特性 Attribute
剖析 AssemblyInfo.cs - 了解常用的特性 Attribute [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5944391.html 序 ...
- Atitit 软件架构方法的进化与演进cs bs soa roa msa attilax总结
Atitit 软件架构方法的进化与演进cs bs soa roa msa attilax总结 1.1. 软件体系架构是沿着单机到 CS 架构,再到 BS 的三层架构甚至多层架构逐步发展过来的,关于 ...
- 从java文件和CS文件里查询方法使用次数工具
前几天,领导让我找一下老系统(Java)里getRemoteUser方法都哪个文件用了,package是什么,方法被调用了多少次,当时因为着急,所以,直接人工找的,但是以后要是再出现,人工找就太讨厌了 ...
- 关于 WP 开发中.xaml 与.xaml.cs 的关系
今天我们先来看一下在WP8.1开发中最长见到的几个文件之间的关系.比较论证,在看这个问题之前我们简单看看.NET平台其他两个不同的框架: Windows Forms 先看看Window Forms中的 ...
- .net 用户控件ascx.cs注册js脚本代码无效果
在.net web项目中碰到一个比较奇怪的问题,网上没找到解决方案,先自己mark一下 问题描述: 添加一个用户控件ascx,在后端.cs添加js注册脚本,执行后没有弹出框 注册脚本为: this.P ...
- DateHelper.cs日期时间操作辅助类C#
//==================================================================== //** Copyright © classbao.com ...
- 仅用aspx文件实现Ajax调用后台cs程序。(实例)
仅用aspx文件实现Ajax调用后台cs无刷新程序.(实例) 两个文件:aaa.aspx 和aaa.aspx.cs 一.aaa.aspx <script type="text/java ...
- Etw EventSourceProvider_EventsProducer.cs OopConsoleTraceEventListenerMonitor_TraceControllerEventsConsumer.cs
// EventSourceProvider_EventsProducer.cs /* /r:"D:\Microshaoft.Nuget.Packages\Microsoft.Diagnos ...
- WPF根据Oracle数据库的表,生成CS文件小工具
开发小工具的原因: 1.我们公司的开发是客户端用C#,服务端用Java,前后台在通讯交互的时候,会用到Oracle数据库的字段,因为服务器端有公司总经理开发的一个根据Oracle数据库的表生成的cla ...
- 用CS的思维可以指导BS的项目吗?
最近项目上线,越来越觉的让人不爽.1.在录数据的界面领导要求用Enter键一路打下来,用户不用操作鼠标数据就可以录完. 2.CS的项目中用快捷键的确很方便,但是大家在BS的项目中也用快捷键吗? 反正我 ...
随机推荐
- .NetCore3.1+微服务架构技术栈
目标 目标系统架构演变,单体-分布式-微服务-中台 微服务架构核心解决,横向对比1.0.2.0.3.0 践行微服务架构,全组件解读! 也谈中台 单体架构Monolithic 单体应用时代:应用程序就是 ...
- [转]-- ISP(图像信号处理)算法概述、工作原理、架构、处理流程
目录 ISP的主要内部构成: ISP内部包含 CPU.SUP IP(各种功能模块的通称).IF 等设备 ISP的控制结构:1.ISP逻辑 2.运行在其上的firmware ISP上的Firmware包 ...
- WebSSH远程管理Linux服务器、Web终端窗口自适应(二)
上一篇:Gin+Xterm.js实现WebSSH远程Kubernetes Pod 支持用户名密码认证 支持SSH密钥认证 支持Web终端窗口自适应 支持录屏审计 Go SSH golang.org/x ...
- 解决: better-scroll.esm.js?f40f:180 [BScroll warn]: EventEmitter has used unknown event type: "pullingUp"
改为这样,把所有值设为true mounted() { // 滚动条 this.scroll = new BScroll(this.$refs.wrapper, { click: true, obse ...
- pandas去重方法
原文链接:https://blog.csdn.net/missyougoon/article/details/83926840 数据去重可以使用duplicated()和drop_duplicates ...
- 使用 Habana Gaudi2 加速视觉语言模型 BridgeTower
在对最先进的视觉语言模型 BridgeTower 进行微调时,使用 Optimum Habana v1.6, Habana Gaudi2 可以达到 近 3 倍于 A100 的速度.硬件加速的数据加载以 ...
- 在langchain中使用自定义example selector
简介 在之前的文章中,我们提到了可以在跟大模型交互的时候,给大模型提供一些具体的例子内容,方便大模型从这些内容中获取想要的答案.这种方便的机制在langchain中叫做FewShotPromptTem ...
- DASCTF 2023 & 0X401七月暑期挑战赛
比赛只出了一道,小菜不是罪过-_- controlflow 这个题动调到底就行 for i in range(40): after_xor[i]=inp[i]^0x401 after_xor[i] + ...
- MindSponge分子动力学模拟——安装与使用(2023.08)
技术背景 昇思MindSpore是由华为主导的一个,面向全场景构建最佳昇腾匹配.支持多处理器架构的开放AI框架.MindSpore不仅仅是软件层面的工具,更重要的是可以协同华为自研的昇腾Ascend平 ...
- 《SQL与数据库基础》22. 分库分表(二)
目录 分库分表(二) MyCat分片规则 范围分片 取模分片 一致性hash分片 枚举分片 应用指定算法 固定分片hash算法 字符串hash解析 按天分片 自然月分片 MyCat原理 MyCat管理 ...