c# - ASP.NET MVC 4 HttpClient() 问题

标签 c# asp.net-mvc-4 paypal asp.net-4.0 asp.net-4.5

我目前正在开发一个使用 PayPal 处理信用卡交易的 ASP.Net MVC 4 应用程序。我已经使用 PayPal RESTFul API 完成了大部分设置,出于某种原因,PayPal 最新版本的 SDK 只是不想工作(通过 NUGET),所以我决定自己使用 ASP.Net 最新最好的 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(... 但我似乎找不到替代品来完成这项工作。我应该使用什么?

在这方面的任何帮助将不胜感激。

最佳答案

您似乎错误地设置了 header 值。尝试以下操作,看看它是否有效:

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

关于c# - ASP.NET MVC 4 HttpClient() 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17081615/

相关文章:

c# - 去除左右边框

javascript - 单击按钮以 mvc 形式触发模式弹出窗口

asp.net-mvc - 将 iPad 设备的 MVC 设置为使用常规 Web 版本,而不是 .mobile

php - 尝试为 paypal 创建计费协议(protocol)时出现 Http 响应代码 500 错误 - PHP

c# - 激活 IInterceptor 时出错...仅通过 COM?

c# - StackExchange.Redis 字符串值转换为集合

mysql - MVC 中结果不同时 SQL 返回相同结果两次

paypal - 在 Paypal 交易期间收到消息 "we are unable to validate your information"

android - 使用 sdk 高于我的最低 SDK 的 API

c# - 遍历数据网格的行