获得';错误的请求';来自PutAsJsonAsync

本文关键字:来自 PutAsJsonAsync 请求 错误 获得 | 更新日期: 2023-09-27 18:00:59

我正在编写Azure队列触发器功能应用程序,该应用程序使用PUT请求从消息队列中提取数据并将其上传到提供REST服务的存储中。出于测试目的,我在Azure接口的请求正文字段中提供测试数据,而不是从队列中挑选数据。我正在使用PutAsJsonAsync来使用REST。问题是我收到了Bad Request错误。我使用验证工具验证了JSON结构,它是有效的。我也使用Postman成功上传了相同的数据。所以我猜这个问题可能在我的代码中。这是我的代码:

using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Headers;  
public static void Run(string myQueueItem, TraceWriter log)
{
    string URL = "<url>"; 
    HttpClient client = new HttpClient();
    client.BaseAddress = new Uri(URL);
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    client.DefaultRequestHeaders.Add("token","<token value>");
    HttpResponseMessage response = client.PutAsJsonAsync("xxx/xx/xxx",myQueueItem).Result;
    if (response.IsSuccessStatusCode)
    {
        string responseString = response.Content.ReadAsStringAsync().Result;
        log.Info($"This is result: {responseString}");
    }
    else
    {
        log.Info($"Response Status Code: {response.Headers} | Reason : {response.ReasonPhrase}");
    }  

}

获得';错误的请求';来自PutAsJsonAsync

尝试使用client.PutAsync()而不是client.PutAsJsonAsync()

我会这样称呼它:

client.PutAsync("xxx/xx/xxx",new StringContent(myQueueItem, UnicodeEncoding.UTF8, "application/json")).Result