2012-07-09 20 views
21

io sto cercando di pubblicare il cliente richiesta utilizzando RestSharp come segue I m passando il codice di autenticazione di funzione seguenteCome inviare richiesta utilizzando RestSharp

public void ExchangeCodeForToken(string code) 
{ 
    if (string.IsNullOrEmpty(code)) 
    { 
     OnAuthenticationFailed(); 
    } 
    else 
    {   
     var request = new RestRequest(this.TokenEndPoint, Method.POST); 
     request.AddParameter("code", code); 
     request.AddParameter("client_id", this.ClientId); 
     request.AddParameter("client_secret", this.Secret); 
     request.AddParameter("redirect_uri", "urn:ietf:wg:oauth:2.0:oob"); 
     request.AddParameter("grant_type", "authorization_code"); 
     request.AddHeader("content-type", "application/x-www-form-urlencoded"); 

     client.ExecuteAsync<AuthResult>(request, GetAccessToken); 
    } 
} 

void GetAccessToken(IRestResponse<AuthResult> response) 
{ 
    if (response == null || response.StatusCode != HttpStatusCode.OK 
         || response.Data == null 
         || string.IsNullOrEmpty(response.Data.access_token)) 
    { 
     OnAuthenticationFailed(); 
    } 
    else 
    { 
     Debug.Assert(response.Data != null); 
     AuthResult = response.Data; 
     OnAuthenticated(); 
    } 
} 

Ma io sono sempre response.StatusCode = Bad Request. Qualcuno può aiutarmi per come faccio a postare la richiesta utilizzando client Restsharp.

risposta

41

mio RestSharp POST metodo:

var client = new RestClient(ServiceUrl); 

var request = new RestRequest("/resource/", Method.POST); 

// Json to post. 
string jsonToSend = JsonHelper.ToJson(json); 

request.AddParameter("application/json; charset=utf-8", jsonToSend, ParameterType.RequestBody); 
request.RequestFormat = DataFormat.Json; 

try 
{ 
    client.ExecuteAsync(request, response => 
    { 
     if (response.StatusCode == HttpStatusCode.OK) 
     { 
      // OK 
     } 
     else 
     { 
      // NOK 
     } 
    }); 
} 
catch (Exception error) 
{ 
    // Log 
} 
+0

stringa jsonToSend = JsonHelper.ToJson (JSON); Puoi spiegare questa linea? –

+0

è sufficiente convertire l'oggetto in una stringa json. (json = object, jsonToSend = json rappresentazione di "json"). Dovrei cambiare quei nomi. – David

+0

Come allegare un file alla richiesta? – OPV

10

In questo modo funziona bene per me:

var request = new RestSharp.RestRequest("RESOURCE", RestSharp.Method.POST) { RequestFormat = RestSharp.DataFormat.Json } 
       .AddBody(BODY); 

var response = Client.Execute(request); 

// Handle response errors 
HandleResponseErrors(response); 

if (Errors.Length == 0) 
{ } 
else 
{ } 

Spero che questo aiuti! (Anche se è un po 'tardi)

+0

Il tuo è l'unico che ha funzionato per la mia API node.js. Grazie! – coffekid

+1

non hai definito Client –

3

A partire dal 2017 ho Pubblica su un servizio di riposo e di ottenere i risultati da esso così:

 var loginModel = new LoginModel(); 
     loginModel.DatabaseName = "TestDB"; 
     loginModel.UserGroupCode = "G1"; 
     loginModel.UserName = "test1"; 
     loginModel.Password = "123"; 

     var client = new RestClient(BaseUrl); 

     var request = new RestRequest("/Connect?", Method.POST); 
     request.RequestFormat = DataFormat.Json; 
     request.AddBody(loginModel); 

     var response = client.Execute(request); 

     var obj = JObject.Parse(response.Content); 

     LoginResult result = new LoginResult 
     { 
      Status = obj["Status"].ToString(), 
      Authority = response.ResponseUri.Authority, 
      SessionID = obj["SessionID"].ToString() 
     }; 
Problemi correlati