2017-04-07 1 views
1

J'essaie d'appeler une API OAuth2 avec le jeu de paramètres de portée t read,usercp. Cependant RestSharp code toujours le paramètre à &scope=read%2Cusercp alors qu'il devrait être &scope=read,usercpEmpêcher le codage des paramètres RestSharp

Je n'ai pas encore trouvé un moyen de désactiver le codage pour un seul paramètre.

Voici mon code:

var request = GetRequest("index.php?oauth/token", Method.POST); 
request.AddParameter("client_id", ClientId); 
request.AddParameter("client_secret", ClientSecret); 

request.AddParameter("grant_type", "password"); 
request.AddParameter("username", username); 
request.AddParameter("password", password); 
request.AddParameter("scope", "read,usercp"); 

//request.Parameters.Add(new Parameter 
//{ 
// ContentType = "application/json", 
// Name = "scope", 
// Value = "read,usercp" 
//}); 

var response = await RestClient.ExecuteTaskAsync<AuthenticateResponse>(request); 
if (response.StatusCode != HttpStatusCode.OK && 
    response.StatusCode != HttpStatusCode.Accepted) 
{ 
    throw new Exception("Could not authenticate user"); 
} 

Comment puis-je désactiver le codage de ce seul paramètre?

+0

Sur la base de [cette] (http://stackoverflow.com/ a/22166701/4499267) réponse, il semble qu'ils soient toujours codés. J'ai aussi trouvé un problème sur github: http://github.com/restsharp/RestSharp/issues/892 – Phate01

+0

@ Phate01 Merci. Peut-être qu'il existe une solution de contournement pour cela? Je n'arrive pas à en trouver un. – SeToY

Répondre

-1

Comme je suppose que vous voulez que la virgule soit traitée exactement comme elle est écrite dans votre code, je vous suggère d'utiliser une chaîne verbatim qui s'échappe. Pas tout à fait sûr de savoir comment gère RestSharp cela, mais vous pouvez essayer soit:

request.AddParameter("scope", @"read,usercp"); 

ou vous échapper dans une chaîne séparément:

var sScope = @"read,usercp"; 
    request.AddParameter("scope", sScope);