ASP.NET Web Api Get/Post方式调用Web Api

 原文链接https://www.cnblogs.com/huatao/p/4720595.html

本文给出Get/Post方式访问Web Api的帮助方法,对于Put/Delete方式的调用跟Post调用类似。

    一、Web Api调用帮助类

    下面给出Web Api调用帮助类的代码:

 using System;
 using System.Collections.Generic;
 using System.Net.Http;
 using System.Net.Http.Headers;
 using System.Text;
 using System.Web;
 
 namespace TestApi
 {
     /// <summary>
     /// WebApi访问帮助类
     /// </summary>
     public class WebApiHepler
     {
         /// <summary>
         /// 生成最终URL
         /// </summary>
         /// <param name="baseUrl">基准URL(不含查询串)</param>
         /// <param name="dictParam">查询参数字典</param>
         /// <returns>最终URL</returns>
         private static string GetLastUrl(string baseUrl, Dictionary<string, string> dictParam)
         {
             var sbUrl = new StringBuilder(baseUrl);
             if (dictParam != null && dictParam.Count > 0)
             {
                 sbUrl.Append("?");
                 int index = 0;
                 foreach (var item in dictParam)
                 {
                     sbUrl.Append(string.Format("{0}={1}", item.Key,
                         HttpUtility.UrlEncode(item.Value, Encoding.UTF8)));
                     if (index<dictParam.Count - 1)
                     {
                         sbUrl.Append("&");
                     }
                     index++;
                 }
             }
             var url = sbUrl.ToString();
             return url;
         }
 
         /// <summary>
         /// GET方式调用Web Api
         /// </summary>
         /// <param name="baseUrl">基准URL(不含查询串)</param>
         /// <param name="dictParam">查询参数字典</param>
         /// <param name="result">返回数据(Json格式)</param>
         /// <param name="errMsg">出错信息</param>
         /// <returns>成功与否</returns>
         public static bool Get(string baseUrl, Dictionary<string, string> dictParam, out string result, out string errMsg)
         {
             errMsg = string.Empty;
             result = string.Empty;
             try
             {
                 using (var client = new HttpClient())
                 {
                     client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                     var url = GetLastUrl(baseUrl, dictParam);
                     var tmpResult = client.GetAsync(url).Result;
                     tmpResult.EnsureSuccessStatusCode();
                     result = tmpResult.Content.ReadAsStringAsync().Result;
                     return true;
                 }
             }
             catch (Exception ex)
             {
                 errMsg = ex.Message;
                 return false;
             }
             
         }
 
         /// <summary>
         /// POST方式调用Web Api
         /// </summary>
         /// <param name="baseUrl">基准URL(不含查询串)</param>
         /// <param name="dictParam">查询参数字典</param>
         /// <param name="parseData">传递实体数据(Json格式)</param>
         /// <param name="result">返回数据(Json格式)</param>
         /// <param name="errMsg">出错信息</param>
         /// <returns>成功与否</returns>
         public static bool Post(string baseUrl, Dictionary<string, string> dictParam, string parseData, out string result, out string errMsg)
         {
             errMsg = string.Empty;
             result = string.Empty;
             try
             {
                 using (var client = new HttpClient())
                 {
                     client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                     var url = GetLastUrl(baseUrl, dictParam);
                     var content = new StringContent(parseData, Encoding.UTF8);
                     content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                     var tmpResult = client.PostAsync(url, content).Result;
                     tmpResult.EnsureSuccessStatusCode();
                     result = tmpResult.Content.ReadAsStringAsync().Result;
                     return true;
                 }
             }
             catch (Exception ex)
             {
                 errMsg = ex.Message;
                 return false;
             }
         }
     }
 }

    二、部分说明

    对以上的代码作部分说明:

  • GetLastUrl方法用于根据基准URL和查询参数字典获取最终URL
  • client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));这句代码表示希望服务返回Json字符串。
  • content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); 表示以Json格式传递实体内容。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值