在c#后端代码中的http get请求中包含原始文本

问题描述 投票:1回答:3

我有这个代码:

 client.BaseAddress = new Uri("https://sandbox-quickbooks.api.intuit.com/v3/company/1232/vendor/70?minorversion=8");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(
                new MediaTypeWithQualityHeaderValue("application/json"));
            client.DefaultRequestHeaders.Authorization
                         = new AuthenticationHeaderValue("Bearer", "bLpuw.vjbvIP_P7Vyj4ziSGa3Ohg");

            using (HttpResponseMessage response = client.PostAsync("https://sandbox-quickbooks.api.intuit.com/v3/company/1232/query?minorversion=8").Result)
            {
                using (HttpContent content = response.Content)
                {
                    var json = content.ReadAsStringAsync().Result;
                }
            }

根据quickbooks api Postman样本,他们在http post动作中包含原始文本查询。示例:enter image description here

如何在c#post请求中包含原始文本?

c# .net http-post dotnet-httpclient
3个回答
0
投票

您需要将内容传递给PostAsync方法,就像这样

var myContent = "your string in here";
var buffer = System.Text.Encoding.UTF8.GetBytes(myContent);
var byteContent = new ByteArrayContent(buffer);

using (HttpResponseMessage response = client.PostAsync("https://sandbox-quickbooks.api.intuit.com/v3/company/1232/query?minorversion=8",bytecontent).Result)
            {
                using (HttpContent content = response.Content)
                {
                    var json = content.ReadAsStringAsync().Result;
                }
            }

0
投票

创建一个包含文本的StringContent()并将其传递给PostAsync()。

您可能需要检查期望的Content-Type标头,并将其传递给StringContent构造函数。

EG

using (var requestContent = new StringContent(“any text”, Encoding.UTF8, “text/plain”))
{
      ... httpClient.PostAsync(url, requestContent)...
}

0
投票
client.BaseAddress = new Uri("https://sandbox-quickbooks.api.intuit.com/v3/company/1232/vendor/70?minorversion=8");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(
    new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization
                = new AuthenticationHeaderValue("Bearer", "bLpuw.vjbvIP_P7Vyj4ziSGa3Ohg");

var postContent = new StringContent("myContent");

using (HttpResponseMessage response = client.PostAsync("https://sandbox-quickbooks.api.intuit.com/v3/company/1232/query?minorversion=8", postContent).Result)
{
    using (HttpContent content = response.Content)
    {
        var json = content.ReadAsStringAsync().Result;
    }
}

此外,请注意您对Async方法的使用有误,应始终等待,而不是使用任务中的阻塞Result属性。

© www.soinside.com 2019 - 2024. All rights reserved.