httpClient PostAsync 返回 405 方法不允许

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

我通过 Payfast 的自定义集成合并了他们。我正在最后一步通过向以下网址发出请求来验证 Payfast 的请求:

https://sandbox.payfast.co.za/​eng/query/validate

string concat = "pf_payment_id=185322&payment_status=COMPLETE&item_name=ON_123&amount_gross=261.50&merchant_id=00030878...etc";
using (var httpClient = new HttpClient())
{
    string jsonString = JsonConvert.SerializeObject(concat);
    HttpContent content = new StringContent(jsonString, Encoding.UTF8, "application/json");
    var url = _configuration["Payment:Payfast:ValidateUrl"];
    using (var response = await httpClient.PostAsync(url, content))
    {

    }
}

回应:

{StatusCode: 405, ReasonPhrase: 'Method Not Allowed', Version: 1.1, Content: System.Net.Http.HttpConnectionResponseContent, Headers:
{
  Server: nginx/1.19.6
  Date: Thu, 21 Sep 2023 18:52:08 GMT
  Cache-Control: no-cache, private
  Via: 1.1 google
  Strict-Transport-Security: max-age=63072000 ; includeSubDomains
  Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
  Content-Type: text/html; charset=UTF-8
  Content-Length: 630
  Allow: GET, HEAD
}}

根据他们的文档,该方法是POST。我做错了什么?

c# asp.net-core http-post .net-7.0
1个回答
0
投票

首先将

httpclient
服务添加到您的项目中

builder.Services.AddHttpClient();

接下来使用依赖注入

private readonly IHttpClientFactory _clientFactory;

public SendDataController(IHttpClientFactory clientFactory)
{
    _clientFactory = clientFactory;
    _logger = logger;
}

并像这样发送数据:

var values = new Dictionary<string, string>()
{
    { "id", "1255" },
    { "status", "Complete"},
    { "item_name", "ON_123" },
    //Other values
};

var content = new FormUrlEncodedContent(values);

using var Request = new HttpRequestMessage();
Request.Method = HttpMethod.Post;
Request.RequestUri = new Uri("YourURL");
Request.Content = content;
    
using var client = _clientFactory.CreateClient();
    
using var response = await client.SendAsync(Request);
    
Request.Dispose();

string result = await response.Content.ReadAsStringAsync();
    
response.Dispose();
//Other Operations

还有不清楚的地方可以联系我

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