如何在 .net 中使用 Restful(JSON 格式)

How to consume Restful in .net (JSON format)

我必须连接到一个传递 Json 并接收 Json 的服务器。使用 .NET 4.5 的简单方法是什么?

获取令牌:(GET)

要求:

https://website.com/rest/v1/OAuth/AccessToken?client=ABCD=&password=ABC&returnFormat=json

结果:

JSON { "accessTokenResponse": { "token": "12345",  "responseStatus": { "code": "100000", "message": "Service operation completed successfully", "messageDetails": "Access token assigned." } } }

调用方法:(GET)

https://website.com/rest/v1/OAuth/getEmployees?token=12345=&returnFormat=json

如何:

发送请求并使用 .net 接收它?

我试过这种方式,但是最推荐的是什么?

public string GetRequest(string url) 
        {
            var request = (HttpWebRequest)WebRequest.Create(url);
            try 
            {
                var response = request.GetResponse();
                using (var responseStream = response.GetResponseStream()) 
                {
                    var reader = new StreamReader(responseStream, Encoding.UTF8);
                    return reader.ReadToEnd();
                }
            }
            catch (WebException ex) 
            {
                var errorResponse = ex.Response;
                using (var responseStream = errorResponse.GetResponseStream())
                {
                    var reader = new StreamReader(responseStream, Encoding.GetEncoding("utf-8"));
                    var errorText = reader.ReadToEnd();
                }
                throw;
            }
        }

我喜欢RestSharp。您可以通过 NuGet 包管理器添加它。

var client = new RestClient("https://website.com");
var request = new RestRequest("/rest/v1/OAuth/AccessToken?client=ABCD=&password=ABC&returnFormat=json", Method.GET);
var response = client.Execute<Response>(request).Data;

Response class 是使用 json2csharp.com 从您的 JSON 创建的。这是一个在线工具。您粘贴 JSON 并生成 C# classes.

public class ResponseStatus
{
    public string code { get; set; }
    public string message { get; set; }
    public string messageDetails { get; set; }
}

public class AccessTokenResponse
{
    public string token { get; set; }
    public ResponseStatus responseStatus { get; set; }
}

public class Response
{
    public AccessTokenResponse accessTokenResponse { get; set; }
}