2012-07-09 15 views
21

Tôi đang cố gắng để POST yêu cầu sử dụng RestSharp khách hàng như sau tôi đang đi qua Bộ luật Auth để sau chức năngLàm thế nào để POST yêu cầu sử dụng 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(); 
    } 
} 

Nhưng tôi đang nhận được response.StatusCode = Bad Request. Bất cứ ai có thể giúp tôi làm thế nào để tôi POST yêu cầu bằng cách sử dụng Restsharp khách hàng.

Trả lời

41

My RestSharp POST phương pháp:

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

chuỗi jsonToSend = JsonHelper.ToJson (json); Bạn có thể giải thích dòng này? –

+0

nó chỉ chuyển đổi đối tượng thành chuỗi json. (json = object, jsonToSend = biểu diễn json của "json"). Tôi nên thay đổi những tên đó. – David

+0

Cách đính kèm tệp vào yêu cầu của bạn? – OPV

10

Bằng cách này hoạt động tốt đối với tôi:

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

Hope this helps! (Mặc dù nó là hơi muộn)

+0

Yours là người duy nhất làm việc cho API node.js của tôi. Cảm ơn! – coffekid

+1

bạn không xác định Khách hàng –

3

Tính đến năm 2017 tôi gửi đến một dịch vụ nghỉ ngơi và nhận được kết quả từ nó như thế:

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