Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Trustpilot OAuth Restful API:无法进行后期同步_C#_Rest_Async Await_Restful Authentication_Trustpilot - Fatal编程技术网

C# Trustpilot OAuth Restful API:无法进行后期同步

C# Trustpilot OAuth Restful API:无法进行后期同步,c#,rest,async-await,restful-authentication,trustpilot,C#,Rest,Async Await,Restful Authentication,Trustpilot,我正在尝试使用,来发布评论产品的邀请 正如您在下面的代码中所看到的,我已经成功地完成了身份验证步骤,但是我无法成功地将数据发布到。PostAsnyc方法似乎处于等待激活状态。我想知道你有什么建议可以帮忙的 这是我的代码(这里的API凭据不是正版的!): 使用(HttpClient-HttpClient=new-HttpClient()) { 字符串trustPilotAccessTokenUrl=”https://api.trustpilot.com/v1/oauth/oauth-busines

我正在尝试使用,来发布评论产品的邀请

正如您在下面的代码中所看到的,我已经成功地完成了身份验证步骤,但是我无法成功地将数据发布到。PostAsnyc方法似乎处于等待激活状态。我想知道你有什么建议可以帮忙的

这是我的代码(这里的API凭据不是正版的!):

使用(HttpClient-HttpClient=new-HttpClient())
{
字符串trustPilotAccessTokenUrl=”https://api.trustpilot.com/v1/oauth/oauth-business-users-for-applications/accesstoken";
httpClient.BaseAddress=新Uri(trustPilotAccessTokenUrl);
httpClient.DefaultRequestHeaders.Accept.Add(新的MediaTypeWithQualityHeaderValue(“application/x-www-form-urlencoded”);
var authString=“MyApiKey:MyApiSecret”;
httpClient.DefaultRequestHeaders.Authorization=新系统.Net.Http.Headers.AuthenticationHeaderValue(“基本”,Base64Encode(authString));
var stringPayload=“grant_type=password&username=MyUserEmail&password=MyPassword”;
var httpContent=新的StringContent(stringPayload,Encoding.UTF8,“application/x-www-form-urlencoded”);
HttpResponseMessage HttpResponseMessage=httpClient.PostAsync(trustPilotAccessTokenUrl,httpContent).Result;
var accessTokenResponseString=httpResponseMessage.Content.ReadAsStringAsync().Result;
var accessTokenResponseObject=JsonConvert.DeserializeObject(accessTokenResponseString);
//创建邀请对象
var邀请=新审核邀请
{
ReferenceID=“inv001”,
RecipientName=“Jon Doe”,
RecipientEmail=“Jon。Doe@comp.com",
Locale=“en US”
};
var jsonInvitation=JsonConvert.SerializeObject(邀请);
var client=新的HttpClient();
client.DefaultRequestHeaders.Add(“token”,accessTokenResponseObject.AccessToken);
var invitationURI=新Uri(“https://invitations-api.trustpilot.com/v1/private/business-units/{MyBusinessID}/邀请);
//这是一个等待激活的状态!
var a=client.PostAsync(invitationURI,new-StringContent(jsoniinvitation)).ContinueWith((poststask)=>poststask.Result.EnsureSuccessStatusCode());
}

我就是这样解决这个问题的:

    // Serialize our concrete class into a JSON String
    var jsonInvitation = JsonConvert.SerializeObject(invitationObject);

    // Wrap our JSON inside a StringContent which then can be used by the HttpClient class
    var stringContent = new StringContent(jsonInvitation);


    // Get the access token
    var token = GetAccessToken().AccessToken;

    // Create a Uri 
    var postUri = new Uri("https://invitations-api.trustpilot.com/v1/private/business-units/{BusinessUnitID}/invitations");


    // Set up the request
    HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, postUri);
    request.Content = stringContent;
    request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
    request.Content.Headers.Add("token", token);

     // Set up the HttpClient
    var httpClient = new HttpClient();
    //httpClient.DefaultRequestHeaders.Accept.Clear();
    //httpClient.BaseAddress = postUri;
    //httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
    //httpClient.DefaultRequestHeaders.AcceptLanguage.Add(new StringWithQualityHeaderValue("en-US"));

    var task = httpClient.SendAsync(request);

    task.Wait();
这个问题很有帮助:

    // Serialize our concrete class into a JSON String
    var jsonInvitation = JsonConvert.SerializeObject(invitationObject);

    // Wrap our JSON inside a StringContent which then can be used by the HttpClient class
    var stringContent = new StringContent(jsonInvitation);


    // Get the access token
    var token = GetAccessToken().AccessToken;

    // Create a Uri 
    var postUri = new Uri("https://invitations-api.trustpilot.com/v1/private/business-units/{BusinessUnitID}/invitations");


    // Set up the request
    HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, postUri);
    request.Content = stringContent;
    request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
    request.Content.Headers.Add("token", token);

     // Set up the HttpClient
    var httpClient = new HttpClient();
    //httpClient.DefaultRequestHeaders.Accept.Clear();
    //httpClient.BaseAddress = postUri;
    //httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
    //httpClient.DefaultRequestHeaders.AcceptLanguage.Add(new StringWithQualityHeaderValue("en-US"));

    var task = httpClient.SendAsync(request);

    task.Wait();