C# 使用来自C的PayPalRESTAPI#

C# 使用来自C的PayPalRESTAPI#,c#,paypal,paypal-sandbox,C#,Paypal,Paypal Sandbox,我试图根据REST API的cURL示例对其进行简单测试: 我的C#: 我需要修改什么来修复我的代码?从NuGet尝试一下,您可以获得用于rest api中所有函数的类,由paypal提供 我知道这个问题已经有一年多的历史了,但我想我会发布我在这个主题上的发现,因为没有太多。在经历了比我想承认的更长的时间后,我终于让它起作用了。问题中发布的内容与我的答案中发布的内容之间的最大区别在于身份验证以及发布到正文(请注意,对于正文,我使用的不是StringContent,而是FormUrlEncode

我试图根据REST API的cURL示例对其进行简单测试:

我的C#:


我需要修改什么来修复我的代码?

从NuGet尝试一下,您可以获得用于rest api中所有函数的类,由paypal提供


我知道这个问题已经有一年多的历史了,但我想我会发布我在这个主题上的发现,因为没有太多。在经历了比我想承认的更长的时间后,我终于让它起作用了。问题中发布的内容与我的答案中发布的内容之间的最大区别在于身份验证以及发布到正文(请注意,对于正文,我使用的不是StringContent,而是FormUrlEncodedContent,它是在问题中创建的,但从未使用过)

System.Net.ServicePointManager.SecurityProtocol=System.Net.SecurityProtocolType.Tls12;
使用(HttpClient=new HttpClient())
{
client.DefaultRequestHeaders.Accept.Add(新的MediaTypeWithQualityHeaderValue(“应用程序/json”);
client.DefaultRequestHeaders.AcceptLanguage.Add(新StringWithQualityHeaderValue(“en_US”);
var clientId=“”;
var clientSecret=“”;
var bytes=Encoding.UTF8.GetBytes($“{clientId}:{clientSecret}”);
client.DefaultRequestHeaders.Authorization=新的AuthenticationHeaderValue(“基本”,Convert.ToBase64String(字节));
var keyValues=新列表();
添加(新的KeyValuePair(“授权类型”、“客户端凭据”);
var responseMessage=wait client.PostAsync(“https://api.sandbox.paypal.com/v1/oauth2/token“,新的FormUrlEncodedContent(keyValues));
viewModel.ResponseMessage=等待ResponseMessage.Content.ReadAsStringAsync();
}

完成此操作后,我可以在responseMessage中获取json响应,然后为我的代码获取承载令牌。

StackOverflow是一个讲英语的社区,请翻译您的问题。这个问题似乎离题了,因为它不是用英语写的
curl -v https://api.sandbox.paypal.com/v1/oauth2/token \
-H "Accept: application/json" \
-H "Accept-Language: en_US" \
-u "EOJ2S-Z6OoN_le_KS1d75wsZ6y0SFdVsY9183IvxFyZp:EClusMEUk8e9ihI7ZdVLF5cZ6y0SFdVsY9183IvxFyZp" \
-d "grant_type=client_credentials"
var h = new HttpClientHandler();
h.Credentials = new NetworkCredential("client_id", "secret");
var client = new HttpClient();

client.BaseAddress = new Uri("https://api.sandbox.paypal.com/v1/oauth2/token");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("Accept-Language", "en_US");

var requestContent = new FormUrlEncodedContent(new[] {
     new KeyValuePair<string, string>("grant_type", "client_credentials"),
});

HttpRequestMessage req = new HttpRequestMessage(System.Net.Http.HttpMethod.Post, "https://api.sandbox.paypal.com/v1/oauth2/token");

req.Content = new StringContent("grant_type=client_credentials");

var r = client.SendAsync(req).Result;
StatusCode: 415, ReasonPhrase: 'Unsupported Media Type', Version: 1.1, Content: System.Net.Http.StreamContent, Headers: { PROXY_SERVER_INFO: host=slcsbjava2.slc.paypal.com;threadId=13873 Paypal-Debug-Id: 6bc39da1e021d SERVER_INFO: identitysecuretokenserv:v1.oauth2.token&CalThreadId=351&TopLevelTxnStartTime=14649fa185e&Host=slcsbidensectoken501.slc.paypal.com&pid=25122 CORRELATION-ID: 6bc39da1e021d Transfer-Encoding: chunked Date: Thu, 29 May 2014 21:54:25 GMT Server: Apache-Coyote/1.1 }
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;

using (HttpClient client = new HttpClient())
{
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    client.DefaultRequestHeaders.AcceptLanguage.Add(new StringWithQualityHeaderValue("en_US"));

    var clientId = "<client_id>";
    var clientSecret = "<client_secret>";
    var bytes = Encoding.UTF8.GetBytes($"{clientId}:{clientSecret}");

    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(bytes));

    var keyValues = new List<KeyValuePair<string, string>>();
    keyValues.Add(new KeyValuePair<string, string>("grant_type", "client_credentials"));
    var responseMessage = await client.PostAsync("https://api.sandbox.paypal.com/v1/oauth2/token", new FormUrlEncodedContent(keyValues));
    viewModel.ResponseMessage = await responseMessage.Content.ReadAsStringAsync();
}