1.通用方法

public class GetDataByWebApi
{
/// <summary>
/// 通过web api获取数据的方法
/// </summary>
/// <param name="url">api的url</param>
/// <param name="method">请求类型,默认是get</param>
/// <param name="postData">post请求所携带的数据</param>
/// <returns></returns>
public static string RequestData(string url, string method = "Get", string postData = null)
{
try
{
method = method.ToUpper();
//设置安全通信协议 我方公司服务器有些强制使用tls1.2的安全通信协议,所以至少包含SecurityProtocolType.Tls12 如果沒有SecurityProtocolType.Tls12设置会报错:HttpWebRequest底层连接已关闭:传送时发生意外错误
ServicePointManager.SecurityProtocol =
SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls |
SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; //创建请求实例
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); //设置请求类型
request.Method = method;
//设置请求消息主体的编码方法
request.ContentType = "application/json"; //POST方式處理
if (method == "POST")
{
//test t = test.T;
//t.gaga("哟西"); //用UTF8字符集对post请求携带的数据进行编码,可防止中文乱码
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
//指定客户端post请求携带的数据的长度
request.ContentLength = byteArray.Length; //创建一个tream,用于写入post请求所携带的数据(该数据写入了请求体)
Stream stream = request.GetRequestStream();
stream.Write(byteArray, 0, byteArray.Length);
stream.Close();
} //获取请求的响应实例
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//获取读取流实体,用来以UTF8字符集读取响应流中的数据
StreamReader myStreamReader = new StreamReader(response.GetResponseStream(), /*Encoding.UTF8*/Encoding.Default);
//进行数据读取
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
return retString;
}
catch (Exception ex)
{
//拋出異常
//throw ex;
return ex.Message;
}
}
}

注:需要引用Newtonsoft.Json.dll下的Newtonsoft.Json;

2.模拟发送自定义类数据

(1)自定义类

/// <summary>
/// 请求参数
/// </summary>
public class ASK
{
/// <summary>
/// 自定义数据体
/// </summary>
public Dictionary<object, object> data { get; set; }
/// <summary>
/// 功能名
/// </summary>
public string fun { get; set; }
/// <summary>
/// 消息id,服务端接收后会原样返回,websocket连接可用用来异步转同步用。http模式直接填0
/// </summary>
public string msgid { get; set; } public ASK(Dictionary<object, object> data, string fun, string msgid)
{
this.data = data;
this.fun = fun;
this.msgid = msgid;
} public ASK()
{ }
}

(2)模拟发送

/// <summary>
/// http请求方式调用web api
/// </summary>
/// <param name="ask">请求参数</param>
/// <returns>返回调用结果</returns>
public string HttpApi(ASK ask)
{
if (ask != null)
{
string jsonstr = JsonConvert.SerializeObject(ask);
string result = GetDataByWebApi.RequestData("http://127.0.0.1:9912/api", "POST", jsonstr);
return result;
}
else { return ""; }
} public void PostSend()
{
ASK D = new ASK() { data = new Dictionary<object, object>(), fun = "get_device_list", msgid = "0" };
string jsonstr = JsonConvert.SerializeObject(D);
string result = GetDataByWebApi.RequestData("http://127.0.0.1:9912/api", "POST", jsonstr);//post方式发送
  //string result = GetDataByWebApi.RequestData("http://127.0.0.1:9912/api?fun=get_device_list");//Get方式发送
MessageBox.Show(result);
}

最新文章

  1. ORA-20000 ORU-10027 buffer overflow limit of 2000 bytes
  2. Linux学习心得之 双显卡、中文输入法及svn初步使用
  3. 常用的几种 SQLServer 分页查询方式实现
  4. 特殊的attribute机制
  5. eclipse中相同代码的高亮显示
  6. xmlns:android作用以及自定义布局属性
  7. Docker学习笔记(1) — docker 常用命令
  8. javascript创建类的6种方式
  9. C++头文件保护符和变量的声明定义
  10. (转)java提高篇(五)-----抽象类与接口
  11. Python数据分析中 DataFrame axis=0(0轴)与axis=1(1轴)的理解
  12. Windows Server 2016-Powershell迁移FSMO角色
  13. 3.关于QT中的MainWindow窗口,MenuBar,ToolBar,QuickTip等方面的知识点
  14. orecal基本连接数据库简介
  15. 未能加载文件或程序集“Benlai.SOA.Framework.Common, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。系统找不到指定的文件。
  16. WebService使用实例
  17. python之commands模块
  18. maven 打 fatjar
  19. opensuse下配置IP、DNS、GATEWAY
  20. CentOS 7.2下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1

热门文章

  1. python 第一二次教学笔记之数据操作
  2. java 入门与进阶P-6.5+P-6.6
  3. FLASH-CH32F203替换CH32F103 FLASH快速编程移植说明
  4. Jemeter参数
  5. C++ 从数组中拿值,每个值不相同
  6. Spingboot 程序在linux 上发布
  7. SpringCloud Sleuth链路追踪
  8. 安卓逆向 crmak的动态调试
  9. 基于NPOI封装导出Excel方法
  10. 华为云CodeArts Artifact,5大特性守护制品质量与安全