ASP.NET MVC 4 HttpClient() issue

本文关键字:issue HttpClient NET MVC ASP | 更新日期: 2023-09-27 18:18:14

我目前正在做一个ASP。Net MVC 4应用程序,使用PayPal处理信用卡交易。我已经用PayPal RESTFul API设置了大部分内容,由于某种原因,PayPal最新版本的SDK就是不想工作(通过NUGET),所以我决定自己使用ASP进行API调用。网络上最新最伟大的HttpClient()(无论如何更喜欢这样)

我需要做的是以下(从PayPal的文档复制)

 curl -v https://api.sandbox.paypal.com/v1/payments/payment '
 -H "Content-Type:application/json" '
 -H "Authorization:Bearer EEwJ6tF9x5WCIZDYzyZGaz6Khbw7raYRIBV_WxVvgmsG" '
 -d   '{
        "intent": "sale",
        "rest_of_the_data": "I didn't include it here"
      }'

我现在卡住的是第三个参数-H "Authorization:Bearer EEwJ6tF9x5WCIZDYzyZGaz6Khbw7raYRIBV_WxVvgmsG" '这是我没有工作的:

using (var client = new HttpClient())
{
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(                                    System.Text.ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1} {2}", "Authorization", accessToken.token_type, accessToken.access_token))));
    var response = client.PostAsync<Payment>(endPoint + "/v1/payments/payment", payment, new JsonMediaTypeFormatter());
    if (response.Result.IsSuccessStatusCode)
       {
          var responseContent = response.Result.Content;
          var responseString = responseContent.ReadAsAsync<Payment>().Result;
       }
}
使用上面的代码,我得到以下响应:
Result = {StatusCode: 401, ReasonPhrase: 'Unauthorized', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
  Date: Thu, 13 Jun 2013 07:06:50 GMT
  Server: Apache-Coyote/1.1
  Content-Length: 0
  Content-Type: application/json
}}

现在我确信我通过了正确的证书,但我相信它没有根据-H "Authorization:Bearer...正确格式化,我相信我不应该使用client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(...,但我似乎找不到替代品来完成这项工作。我应该用什么?

ASP.NET MVC 4 HttpClient() issue

显示您设置的标题值不正确。试试下面的命令看看是否有效:

client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(accessToken.access_token));