【问题标题】:Rest API Post Json using C# with two parametersRest API Post Json 使用带有两个参数的 C#
【发布时间】: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();
            // ....
        }

【问题讨论】:

    标签: c# json api rest


    【解决方案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 时发送的内容。我添加了一个示例
    猜你喜欢
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多