国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

.Net整合Json實現REST服務客戶端的方法詳解

2024-07-10 13:32:53
字體:
來源:轉載
供稿:網友

前言

本文主要給大家介紹了關于.Net整合Json實現REST服務客戶端的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。

一. 準備工作

  1. 點擊官網 或 本地 下載支持.Net4.0 的Json插件 Newtonsoft.Json

  2. 找到 %壓縮包%/Bin/net40/Newtonsoft.Json.dll ,在工程中引用

二. 相關代碼介紹

1. HttpClientUtil.cs  封裝REST方法

using Newtonsoft.Json;using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Net;using System.Text;namespace psi.Common{ public class HttpClientUtil {  // REST @GET 方法,根據泛型自動轉換成實體,支持List<T>   public static T doGetMethodToObj<T>(string url)  {   HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);   request.Method = "get";   request.ContentType = "application/json;charset=UTF-8";   HttpWebResponse response = null;   try   {    response = (HttpWebResponse)request.GetResponse();   }   catch (WebException e)   {    response = (HttpWebResponse)e.Response;    return default(T);   }   string json = getResponseString(response);   return JsonConvert.DeserializeObject<T>(json);  }  // 將 HttpWebResponse 返回結果轉換成 string   private static string getResponseString(HttpWebResponse response)  {   string json = null;   using (StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.GetEncoding("UTF-8")))   {    json = reader.ReadToEnd();   }   return json;  }  // 獲取異常信息   private static string getRestErrorMessage(HttpWebResponse errorResponse)  {   string errorhtml = getResponseString(errorResponse);   string errorkey = "UnhandledException:";   errorhtml = errorhtml.Substring(errorhtml.IndexOf(errorkey) + errorkey.Length);   errorhtml = errorhtml.Substring(0, errorhtml.IndexOf("/n"));   return errorhtml;  }  // REST @POST 方法   public static T doPostMethodToObj<T>(string url, string jsonBody)  {   HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);   request.Method = "post";   request.ContentType = "application/json;charset=UTF-8";   var stream = request.GetRequestStream();   using (var writer = new StreamWriter(stream))   {    writer.Write(jsonBody);    writer.Flush();   }   HttpWebResponse response = (HttpWebResponse)request.GetResponse();   string json = getResponseString(response);   return JsonConvert.DeserializeObject<T>(json);  }  // REST @PUT 方法   public static string doPutMethod(string url)  {   HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);   request.Method = "put";   request.ContentType = "application/json;charset=UTF-8";   HttpWebResponse response = (HttpWebResponse)request.GetResponse();   using (StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.GetEncoding("UTF-8")))   {    return reader.ReadToEnd();   }  }  // REST @PUT 方法,帶發送內容主體   public static T doPutMethodToObj<T>(string url, string jsonBody)  {   HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);   request.Method = "put";   request.ContentType = "application/json;charset=UTF-8";   request.Timeout = 30 * 1000;   var stream = request.GetRequestStream();   using (var writer = new StreamWriter(stream))   {    writer.Write(jsonBody);    writer.Flush();   }   HttpWebResponse response = (HttpWebResponse)request.GetResponse();   string json = getResponseString(response);   return JsonConvert.DeserializeObject<T>(json);  }  // REST @DELETE 方法   public static bool doDeleteMethod(string url)  {   HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);   request.Method = "delete";   request.ContentType = "application/json;charset=UTF-8";   HttpWebResponse response = (HttpWebResponse)request.GetResponse();   using (StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.GetEncoding("UTF-8")))   {    string responseString = reader.ReadToEnd();    if (responseString.Equals("1"))    {     return true;    }    return false;   }  }  }}

2. 調用REST服務端方法,以Json作為數據格式

/// <summary>/// 取得升級服務端的url地址/// </summary>/// <returns></returns>private String getServerUrl(){ String result = ""; UpgraderClient upgraderClient = getUpgraderClient(); if (upgraderClient != null) {  result += "http://" + upgraderClient.serverIP +   ":" + upgraderClient.serverPort +   "/upgraderServer/service/upgrade.do"; } return result;}/// <summary>/// 測試與升級服務端的連接/// </summary>/// <returns></returns>public bool testConnect(){ FileRequest fileReq = new FileRequest(); fileReq.type = (int)RequestType.TEST_CONNECT; string jsonData = JsonConvert.SerializeObject(fileReq); FileResponse rep = null; try {  rep = HttpClientUtil.doPostMethodToObj<FileResponse>(getServerUrl(), jsonData); } catch {  throw new Exception("連接遠程服務端失敗!"); } return rep.status == 200;}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到ASP.NET教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长治县| 科技| 化德县| 泰兴市| 博湖县| 姜堰市| 行唐县| 延吉市| 塔城市| 甘德县| 饶平县| 眉山市| 如皋市| 玉田县| 南郑县| 厦门市| 长白| 祁阳县| 华蓥市| 白银市| 昌都县| 嘉祥县| 赤峰市| 宁蒗| 靖州| 南木林县| 房山区| 隆回县| 六枝特区| 微博| 壶关县| 清苑县| 公主岭市| 乌拉特前旗| 英德市| 寿宁县| 安丘市| 辰溪县| 寻甸| 晋江市| 黄冈市|