C#eBay OAuth Compliance API身份验证问题

问题描述 投票:0回答:1

经过多次努力之后,我终于能够将OAuth身份验证/刷新令牌流程降低。我确信我在这个过程中使用的令牌很好。但我很难与Compliance API沟通,我认为它可能与我的头部身份验证过程有关,而不是专门针对Compliance API,但我不确定。我尝试了以下代码的许多不同组合失败了。我尝试将调用作为GET和POST(调用应该是GET)。我已尝试使用编码且未编码的访问令牌。尝试了所有不同的代码组合,我得到了授权错误或错误的请求错误。您可以从注释掉的代码中看到我尝试过的各种内容。谢谢您的帮助。

public static string Complaince_GetViolations(string clientId, string ruName, string clientSecret, string accessToken, ILog log)
{
var clientString = clientId + ":" + clientSecret;
//byte[] clientEncode = Encoding.UTF8.GetBytes(clientString);
//var credentials = "Basic " + System.Convert.ToBase64String(clientEncode);

byte[] clientEncode = Encoding.UTF8.GetBytes(accessToken);
var credentials = "Bearer " + System.Convert.ToBase64String(clientEncode);

var codeEncoded = System.Web.HttpUtility.UrlEncode(accessToken);

HttpWebRequest request = WebRequest.Create("https://api.ebay.com/sell/compliance/v1/listing_violation?compliance_type=PRODUCT_ADOPTION")   
as HttpWebRequest;

request.Method = "GET";
//  request.ContentType = "application/x-www-form-urlencoded";

//request.Headers.Add(HttpRequestHeader.Authorization, credentials);
//request.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + codeEncoded);
request.Headers.Add(HttpRequestHeader.Authorization, credentials);
//request.Headers.Add("Authorization", "Bearer " + codeEncoded);
request.Headers.Add("X-EBAY-C-MARKETPLACE-ID", "EBAY-US");


log.Debug("starting request.GetRequestStream");
string result = "";
var response = (HttpWebResponse)request.GetResponse();
using (var streamReader = new StreamReader(response.GetResponseStream())) //FAILS HERE
{
    result = streamReader.ReadToEnd();
}

//DO MORE STUFF BELOW
return "STUFF";
}
c# httpwebrequest httpwebresponse ebay-api getresponsestream
1个回答
1
投票

我终于想出了解决这个问题的方法。整个承载字符串的HTML编码是个问题。如果有人在将来需要这个你的欢迎。 =)

            HttpWebRequest request = WebRequest.Create("https://api.ebay.com/sell/compliance/v1/listing_violation?compliance_type=PRODUCT_ADOPTION")   
        as HttpWebRequest;

        request.Method = "GET";
        request.Headers.Add(HttpRequestHeader.Authorization, System.Web.HttpUtility.HtmlEncode("Bearer " + accessToken));
        request.Headers.Add("X-EBAY-C-MARKETPLACE-ID", "EBAY-US");

        log.Debug("starting request.GetRequestStream");
        string result = null;
        var response = (HttpWebResponse)request.GetResponse();
        using (var streamReader = new StreamReader(response.GetResponseStream()))
        {
            result = streamReader.ReadToEnd();
        }
© www.soinside.com 2019 - 2024. All rights reserved.