2012-07-09 24 views
21

I m intentando escribir un mensaje utilizando la solicitud del cliente RestSharp de la siguiente manera I m pasando el Código de Autorización a la función siguienteCómo publicar solicitud utilizando 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(); 
    } 
} 

Pero me estoy response.StatusCode = Solicitud incorrecta. ¿Alguien me puede ayudar para saber cómo PUBLICAR la solicitud utilizando el cliente de Restsharp?

Respuesta

41

Mi RestSharp POSTAL método:

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

cadena jsonToSend = JsonHelper.ToJson (JSON); ¿Puedes explicar esta línea? –

+0

simplemente convierte el objeto en una cadena json. (json = object, jsonToSend = json representación de "json"). Debería cambiar esos nombres. – David

+0

¿Cómo adjuntar archivo a su solicitud? – OPV

10

De esta manera funciona bien para mí:

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 
{ } 

Espero que esto ayude! (Aunque es un poco tarde)

+0

El tuyo es el único que funcionó para mi API node.js. ¡Gracias! – coffekid

+1

no definiste Cliente –

3

A partir de 2017 he puesto a un servicio de descanso y obtener los resultados de la misma por el estilo:

 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() 
     }; 
Cuestiones relacionadas