虚位以待(AD)
虚位以待(AD)
首页 > 网络编程 > ASP.NET > .Net整合Json实现REST服务客户端的方法详解

.Net整合Json实现REST服务客户端的方法详解
类别:ASP.NET   作者:码皇   来源:互联网   点击:

这篇文章主要给大家介绍了关于 Net整合Json实现REST服务客户端的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

前言

本文主要给大家介绍了关于.Net整合Json实现REST服务客户端的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

一. 准备工作

  1. 点击官网 或 本地 下载支持.Net4.0 的Json插件 Newtonsoft.Json

  2. 找到 %压缩包%Binnet40Newtonsoft.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;
    }

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

您可能感兴趣的文章:

  • asp.net(C#)解析Json的类代码
  • asp.net中各种类型的JSON格式化
  • 浅析ASP.NET万能JSON解析器
  • asp.net MVC下使用rest的方法
相关热词搜索: asp net json asp net rest服务器 asp net