Rest API Post Json 使用带有两个参数的 C#

Posted

技术标签:

【中文标题】Rest API Post Json 使用带有两个参数的 C#【英文标题】:Rest API Post Json using C# with two parameters 【发布时间】:2021-05-06 16:45:49 【问题描述】:

我需要在 REST api 上执行 Post 请求,该 api 接受 JSON 数据类型。我要包含两个参数,startdateenddate。 C#中的任何指南?我收到错误(415)不支持的媒体类型。我相信这是因为我的帖子请求没有正确的 json 正文

        var request = WebRequest.Create(url) as HttpWebRequest;
        request.Method = "POST";
        request.Headers.Add(HttpRequestHeader.Authorization, "Bearer xxx");  
        request.ContentType = "application/json; charset=utf-8";

        // Get response here
        var response = request.GetResponse() as HttpWebResponse;
      
        if (response.StatusCode == HttpStatusCode.OK)
        
            Console.WriteLine(response.ToString());
            Console.ReadKey();
            // ....
        

【问题讨论】:

【参考方案1】:

这是我如何设置标题的示例。

using Newtonsoft.Json;

// e.g. update a user's email address via REST POST
dynamic user = new JObject();
user.Email = "testuser@test.com";
var json = user.ToString();

// json is then
// "Email":"testuser@test.com"
// and the json is POSTed to the appropriate REST url

var client = new HttpClient

    Timeout = TimeSpan.FromSeconds(10)
;
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("User-Agent", "user agent name");

var request = GetRequestMessage(uri, accessToken, json);
var response = await client.SendAsync(request);
var content = await response.Content.ReadAsStringAsync();

private HttpRequestMessage GetRequestMessage(string uri, string accessToken, string jsonPayload)

    var httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, uri)
    
        Headers =   "Authorization", $"Bearer accessToken"  
    ;

    httpRequestMessage.Content = new StringContent(jsonPayload, Encoding.UTF8, "application/json");

    return httpRequestMessage;

【讨论】:

client.SendAsync(request);这个客户端是httpclient? 谢谢@codebrane,请澄清下面的变量json var request = GetRequestMessage(uri, accessToken, json); json 是您发送 JSON 时发送的内容。我添加了一个示例

以上是关于Rest API Post Json 使用带有两个参数的 C#的主要内容,如果未能解决你的问题,请参考以下文章

带有 REST API 的 CQRS

使用 alamofire 将带有 JSON 对象和查询参数的 POST 请求发送到 REST Web 服务

REST API:请求正文为 JSON 或纯 POST 数据?

在 django rest api 中使用 POST 解析 Json 错误

如何以 POST 方法在 REST API 中发送日期

JSON:带有 django-rest-framework-json-api 和 JWT 的 API