首页 > 其他分享 >API通用调用帮助类

API通用调用帮助类

时间:2023-04-12 19:48:05浏览次数:35  
标签:调用 通用 string uri API myRequest reader data myResponse

 1         //调用示例
 2         /// <summary>
 3         /// HttpPath请求
 4         /// </summary>
 5         /// <param name="serviceUrl">请求地址</param>
 6         /// <param name="data">发送数据</param>
 7         /// <param name="statusCode">http响应状态</param>
 8         /// <returns></returns>
 9         public static string CommonHttpPathRequest(string serviceUrl, object data, out HttpStatusCode statusCode)
10         {
11             string ReturnString = string.Empty;
12             try
13             {
14                 //构造http请求的对象
15                 HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);
16                 //转成网络流
17                 byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(JsonConvert.SerializeObject(data));
18                 //设置
19                 myRequest.Method = "Patch";
20                 myRequest.ContentLength = buf.Length;
21                 myRequest.ContentType = "application/json";
22                 myRequest.MaximumAutomaticRedirections = 1;
23                 myRequest.AllowAutoRedirect = true;
24                 // 发送请求
25                 Stream newStream = myRequest.GetRequestStream();
26                 newStream.Write(buf, 0, buf.Length);
27                 newStream.Close();
28                 // 获得接口返回值
29                 HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
30                 statusCode = myResponse.StatusCode;
31                 StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
32                 ReturnString = reader.ReadToEnd();
33                 reader.Close();
34                 myResponse.Close();
35             }
36             catch (WebException e)
37             {
38                 ReturnString = e.Message;
39                 statusCode = HttpStatusCode.GatewayTimeout;
40                 //HttpWebResponse errResponse = (HttpWebResponse)e.Response;
41                 //statusCode = errResponse.StatusCode;
42                 //StreamReader reader = new StreamReader(errResponse.GetResponseStream(), Encoding.UTF8);
43                 //ReturnString = reader.ReadToEnd();
44             }
45             return ReturnString;
46         } 
View Code
  1  public static class RestClient
  2     {
  3         private static string BaseUri = "";
  4     
  5         #region Delete方式
  6         public static string HttpDelete(string data, string uri)
  7         {
  8             return CommonHttpRequest(data, uri, "DELETE");
  9         }
 10 
 11         public static string Delete(string uri)
 12         {
 13             //Web访问对象64
 14             string serviceUrl = string.Format("{0}/{1}", BaseUri, uri);
 15             HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);
 16             myRequest.Method = "DELETE";
 17             // 获得接口返回值68
 18             HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
 19             StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
 20             //string ReturnXml = HttpUtility.UrlDecode(reader.ReadToEnd());
 21             string ReturnXml = reader.ReadToEnd();
 22             reader.Close();
 23             myResponse.Close();
 24             return ReturnXml;
 25         }
 26         #endregion
 27 
 28         #region Put方式
 29         public static string Put(string data, string uri)
 30         {
 31             return CommonHttpRequest(data, uri, "PUT");
 32         }
 33         #endregion
 34 
 35 
 36         #region Patch方式
 37         public static string Patch(string data, string uri)
 38         {
 39             return CommonHttpRequest(data, uri, "Patch");
 40         }
 41         #endregion
 42 
 43         #region POST方式实现
 44 
 45         public static string Post(string data, string uri)
 46         {
 47             return CommonHttpRequest(data, uri, "POST");
 48         }
 49 
 50         public static string CommonHttpRequest(string data, string uri, string type)
 51         {
 52             //Web访问对象,构造请求的url地址
 53             string serviceUrl = string.Format("{0}/{1}", BaseUri, uri);
 54 
 55             //构造http请求的对象
 56             HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);
 57             //转成网络流
 58             byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data);
 59             //设置
 60             myRequest.Method = type;
 61             myRequest.ContentLength = buf.Length;
 62             myRequest.ContentType = "application/json";
 63             myRequest.MaximumAutomaticRedirections = 1;
 64             myRequest.AllowAutoRedirect = true;
 65             // 发送请求
 66             Stream newStream = myRequest.GetRequestStream();
 67             newStream.Write(buf, 0, buf.Length);
 68             newStream.Close();
 69             // 获得接口返回值
 70             HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
 71             StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
 72             string ReturnXml = reader.ReadToEnd();
 73             reader.Close();
 74             myResponse.Close();
 75             return ReturnXml;
 76         }
 77         #endregion
 78 
 79         #region GET方式实现
 80         public static string Get(string uri)
 81         {
 82             //Web访问对象64
 83             string serviceUrl = string.Format("{0}/{1}",BaseUri, uri);
 84 
 85             //构造一个Web请求的对象
 86             HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);
 87             // 获得接口返回值68
 88             //获取web请求的响应的内容
 89             HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
 90 
 91             //通过响应流构造一个StreamReader
 92             StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
 93             //string ReturnXml = HttpUtility.UrlDecode(reader.ReadToEnd());
 94             string ReturnXml = reader.ReadToEnd();
 95             reader.Close();
 96             myResponse.Close();
 97             return ReturnXml;
 98         }
 99         #endregion
100     }
View Code

 

标签:调用,通用,string,uri,API,myRequest,reader,data,myResponse
From: https://www.cnblogs.com/qiao298/p/17310969.html

相关文章

  • JavaWeb之Servlet详解(以及浏览器调用 Servlet 流程分析图)
    Servlet1.什么是ServletServlet(java服务器小程序)他是由服务器端调用和执行的(一句话:是Tomcat解析和执行)他是用java语言编写的,本质就是Java类他是按照Servlet规范开发的(除了tomcat->Servletweblogic->Servlet)功能强大,可以完成几乎所有的网站功能2.开发......
  • Nvidia Tensor Core-WMMA API编程入门
    1WMMA(Warp-levelMatrixMultiplyAccumulate)API对于计算能力在7.0及以上的CUDA设备,可以使用CUDAC++API调用TensorCore,支持形如D=AB+C的混合精度的矩阵乘运算。template<typenameUse,intm,intn,intk,typenameT,typenameLayout=void>classfragment;......
  • 国内好用的API平台,还是BAT的实力最强
    应用程序编程接口API即(ApplicationProgrammingInterface),现在众多企业的应用系统中常用的开放接口,对接相应的系统、软件功能,简化专业化的程序开发。下面这些厂商提供的API都不错,比如:百度API、阿里云API、腾讯云API、聚合API传送门国内好用的API平台,还是BAT的实力最强......
  • 基于vue3+ts+vite的项目使用‘unplugin-auto-import/vite’插件,自动全局导入api的注意
    ​ 1.首先安装插件npminstallunplugin-auto-import@vitejs/plugin-vue-D2.安装完成后在vite.congfig.ts中配置,红色部分就是关于插件的基础自动导入部分,这样就可以将vue和router的相关api全局导入了,importAutoImportfrom"unplugin-auto-import/vite"exportdefaultde......
  • APISIX 是怎么保护用户的敏感数据不被泄露的?
    本文以APISIX作为例子,为大家介绍了如何借助GlobalDataEncryption功能来保护敏感数据,确保不会有任何敏感数据进行明文存储,这样即使etcd中所有存储的数据都被盗取,也不会造成敏感数据泄露,从而有效提升了APISIX的安全性。作者刘维,API7.ai技术工程师,ApacheAPISIXContrib......
  • 如何利用空号检测 API 降低企业的业务成本
    引言电话营销和短信营销是现代营销活动的重要手段,但是无效号码的存在导致了很多资源浪费。利用空号检测API就可以避免企业向无效号码发送营销信息,降低营销成本。本文将介绍空号检测API的工作原理以及如何利用空号检测API降低业务成本的多种方式,包括降低电话营销成本、降......
  • 16-springcloud-ribbon-2-ribbon实现服务调用
    1、首先加入ribbon的依赖,但是eureka已经依赖了ribbon,所以这里不需要再引用ribbon的依赖;2、要使用ribbon,只需要一个注解: @Bean@LoadBalancedpublic RestTemplaterestTemplate(){    RestTemplaterestTemplate=new RestTemplate();    return restTemplate;}在R......
  • Asp.NetWebApi跨域解决方案
    最近新开项目,项目初期本地部署访问webapi,api采用JWT验证,发现加上Authorization请求头后就报跨域问题,网上很多方案例如修改webconfig请求头什么的,均测试未果,多方尝试后有了以下方案,一行代码便完全解决跨域问题,特此记录!1、NuGet下载Microsoft.AspNet.WebApi.Cors  2、App_Sta......
  • 手机号码归属地 API 实现个性化推荐的思路分析
    前言随着移动互联网和智能手机的普及,越来越多的人使用手机上网和购物,移动营销已成为企业获取用户和提升品牌知名度的重要手段。手机号码归属地API作为移动营销的关键工具,具有广阔的应用前景。本文将探讨如何利用手机号码归属地API进行个性化推荐和精准广告投放,希望对大家有......
  • 服务拆分及远程调用
    1、服务拆分注意事项(1)不同微服务,不要重复开发相同业务;(2)微服务数据独立,不要访问其他微服务的数据库,每个微服务有自己单独的数据库;(3)微服务可以将自己的业务暴露为接口,供其他微服务调用。 2、微服务调用方式基于RestTemplate发起的http请求实现远程调用(在项目的启动类注入Bean......