我的代码过go 运行得很好,这是

var verificationRequest2 = WebRequest.Create(AbstractPricing.PaypalWebAddress);
verificationRequest2.Method = "POST";
verificationRequest2.ContentType = "application/x-www-form-urlencoded";

var strRequest = "cmd=_notify-validate&" + ipnContext.RequestBody;
verificationRequest2.ContentLength = strRequest.Length;

using (var writer = new StreamWriter(verificationRequest2.GetRequestStream(), Encoding.ASCII))
{
    writer.Write(strRequest);
}

using (var reader = new StreamReader(verificationRequest2.GetResponse().GetResponseStream()))
{
    ipnContext.Verification = reader.ReadToEnd();
}

问题是,WebClient已经过时了,我需要将其转换为HttpClient

我不知道怎么把这个换算成HttpClient...我有tried

var verificationRequest = new HttpClient();
var content = new StringContent(strRequest, Encoding.UTF8, "text/xml");
var response= verificationRequest.PostAsync(AbstractPricing.PaypalWebAddress, content);
//help here please

我不知道如何做最后一位-我如何使用HttpClient获得验证

推荐答案

您可以用与Web客户端完全相同的方式构造请求

class AbstractPricing {
  // Replace this with the actual PayPal web address
  public static string PaypalWebAddress {
    get;
  } = "https://www.example.com/paypal-endpoint";
}

class IpnContext {
  public string RequestBody {
    get;
    set;
  }
  public string Verification {
    get;
    set;
  }
}

// Actual code here, previous code just for testing
var paypalWebAddress = AbstractPricing.PaypalWebAddress;
var strRequest = "cmd=_notify-validate&" + ipnContext.RequestBody;

using (HttpClient httpClient = new HttpClient())
{
    // Create the HTTP content with the correct content type
    var content = new StringContent(strRequest, Encoding.ASCII, "application/x-www-form-urlencoded");

    // Make the POST request
    HttpResponseMessage response = await httpClient.PostAsync(paypalWebAddress, content);

    // Check if the request was successful
    if (response.IsSuccessStatusCode)
    {
        // Read the response content
        ipnContext.Verification = await response.Content.ReadAsStringAsync();
    }
    else
    {
        // Handle the error, e.g., log or throw an exception
        Console.WriteLine($"Error: {response.StatusCode} - {response.ReasonPhrase}");
    }

    // do something with ipnContext here
}

Csharp相关问答推荐

在依赖性注入和继承之间进行 Select

需要澄清C#的Clean Architecture解决方案模板的AuditableEntityInterceptor类

使用命令初始化可绑定属性

ASP.NET Core 8.0 JWT验证问题:尽管令牌有效,但SecurityTokenNoExpirationError异常

此反射有什么问题.是否发送值转换委托?

应用程序启动器,可 Select 物理屏幕

Blazorise折线图仅绘制数据集的一部分

如何在WPF的树视图中显示一个对象的两个或多个属性,其中只有一个是分层项?

WinForms在Linux上的JetBrains Rider中的应用

如何注册类使用多级继承与接口

C#使用TextFieldParser读取.csv,但无法使用";0";替换创建的列表空条目

如何使用MailKit删除邮箱?

Azure Functions v4中的Serilog控制台主题

是否可以在Entity Framework Core中使用只读 struct 作为拥有实体?

如何从Azure函数使用Graph API(SDK 5.35)中的[FindMeetingTimes]

.NET Google Workspace API获取错误CS0266

ASP.NET Core 8 Web API:如何添加版本控制?

Excel将';@';添加到具有范围的公式中

当我在Git中暂存文件更改时,它们会消失

Windows Forms(.NET)中文件对话框中的深色模式差异