如何使用带有纯文本正文的 Restsharp
How to use Restsharp with a plain text body
我正在尝试完成此 Ebay 访问令牌 WebRequest
服务器期望
HTTP method: POST
URL: https://api.sandbox.ebay.com/identity/v1/oauth2/token
HTTP headers :
Content-Type = application/x-www-form-urlencoded
Authorization = Basic
Request body (wrapped for readability):
grant_type=client_credentials&
redirect_uri=<RuName-value>&
scope=https://api.ebay.com/oauth/api_sc
如图所示,这是使用 WebRequest
工作的
var credentials = "Basic " + Convert.ToBase64String(Encoding.UTF8.GetBytes(clientId + ":" + clientSecret));
var request = WebRequest.Create("https://api.sandbox.ebay.com/identity/v1/oauth2/token") as HttpWebRequest;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.Headers.Add(HttpRequestHeader.Authorization, credentials);
var formData = Encoding.UTF8.GetBytes("grant_type=client_credentials&redirect_uri=" + ruName + "&scope=https://api.ebay.com/oauth/api_scope");
request.ContentLength = formData.Length;
using (var post = request.GetRequestStream())
{
post.Write(formData, 0, formData.Length);
}
using (var response = request.GetResponse() as HttpWebResponse)
{
StreamReader reader = new StreamReader(response.GetResponseStream());
string result = reader.ReadToEnd();
}
但是以下 RestSharp
请求返回错误
Invalid Request
var resource = "identity/v1/oauth2/token";
var request = new RestRequest(resource, Method.POST);
var credentials = Convert.ToBase64String(Encoding.UTF8.GetBytes(clientId + ":" + clientSecret));
request.AddParameter("Authorization", $"Basic {credentials}", ParameterType.HttpHeader);
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
var body = $"grant_type=client_credentials&redirect_uri={ruName}&scope=https://api.ebay.com/oauth/api_scope";
request.AddParameter("text/xml", body, ParameterType.RequestBody);
var client = new RestClient("https://api.sandbox.ebay.com");
return client.Execute<T>(request);
以下内容对我有用,但我愿意接受更好的答案:
var resource = "identity/v1/oauth2/token";
var request = new RestRequest(resource, Method.POST);
var credentials = Convert.ToBase64String(Encoding.UTF8.GetBytes(clientId + ":" + clientSecret));
request.AddParameter("Authorization", $"Basic {credentials}", ParameterType.HttpHeader);
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
var body = $"grant_type=client_credentials&redirect_uri={ruName}&scope=https://api.ebay.com/oauth/api_scope";
var formData = Encoding.UTF8.GetBytes(body);
request.AddParameter("application/x-www-form-urlencoded", formData, ParameterType.RequestBody);
var client = new RestClient("https://api.sandbox.ebay.com");
return GetResult<T>(client, request);
注意线条
var body = $"grant_type=client_credentials&redirect_uri={ruName}&scope=https://api.ebay.com/oauth/api_scope";
var formData = Encoding.UTF8.GetBytes(body);
request.AddParameter("application/x-www-form-urlencoded", formData, ParameterType.RequestBody);
我正在尝试完成此 Ebay 访问令牌 WebRequest
服务器期望
HTTP method: POST
URL: https://api.sandbox.ebay.com/identity/v1/oauth2/tokenHTTP headers :
Content-Type = application/x-www-form-urlencoded
Authorization = Basic
Request body (wrapped for readability):
grant_type=client_credentials& redirect_uri=<RuName-value>& scope=https://api.ebay.com/oauth/api_sc
如图所示,这是使用 WebRequest
工作的
var credentials = "Basic " + Convert.ToBase64String(Encoding.UTF8.GetBytes(clientId + ":" + clientSecret));
var request = WebRequest.Create("https://api.sandbox.ebay.com/identity/v1/oauth2/token") as HttpWebRequest;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.Headers.Add(HttpRequestHeader.Authorization, credentials);
var formData = Encoding.UTF8.GetBytes("grant_type=client_credentials&redirect_uri=" + ruName + "&scope=https://api.ebay.com/oauth/api_scope");
request.ContentLength = formData.Length;
using (var post = request.GetRequestStream())
{
post.Write(formData, 0, formData.Length);
}
using (var response = request.GetResponse() as HttpWebResponse)
{
StreamReader reader = new StreamReader(response.GetResponseStream());
string result = reader.ReadToEnd();
}
但是以下 RestSharp
请求返回错误
Invalid Request
var resource = "identity/v1/oauth2/token";
var request = new RestRequest(resource, Method.POST);
var credentials = Convert.ToBase64String(Encoding.UTF8.GetBytes(clientId + ":" + clientSecret));
request.AddParameter("Authorization", $"Basic {credentials}", ParameterType.HttpHeader);
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
var body = $"grant_type=client_credentials&redirect_uri={ruName}&scope=https://api.ebay.com/oauth/api_scope";
request.AddParameter("text/xml", body, ParameterType.RequestBody);
var client = new RestClient("https://api.sandbox.ebay.com");
return client.Execute<T>(request);
以下内容对我有用,但我愿意接受更好的答案:
var resource = "identity/v1/oauth2/token";
var request = new RestRequest(resource, Method.POST);
var credentials = Convert.ToBase64String(Encoding.UTF8.GetBytes(clientId + ":" + clientSecret));
request.AddParameter("Authorization", $"Basic {credentials}", ParameterType.HttpHeader);
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
var body = $"grant_type=client_credentials&redirect_uri={ruName}&scope=https://api.ebay.com/oauth/api_scope";
var formData = Encoding.UTF8.GetBytes(body);
request.AddParameter("application/x-www-form-urlencoded", formData, ParameterType.RequestBody);
var client = new RestClient("https://api.sandbox.ebay.com");
return GetResult<T>(client, request);
注意线条
var body = $"grant_type=client_credentials&redirect_uri={ruName}&scope=https://api.ebay.com/oauth/api_scope";
var formData = Encoding.UTF8.GetBytes(body);
request.AddParameter("application/x-www-form-urlencoded", formData, ParameterType.RequestBody);