2012-03-01 90 views
2

所以我試着去建立RestSharp根據文檔 http://momentapp.com/docsRestSharp請求

這裏是我的代碼使用瞬間任務調度。

public class MomentApi : ITaskScheduler 
    { 
     const string BaseUrl = "https://momentapp.com";  

     private RestResponse Execute(RestRequest request) 
    { 
     var client = new RestClient(); 
     client.BaseUrl = BaseUrl; 
     request.AddParameter("apikey", "MYAPIKEYHERE", ParameterType.UrlSegment); // used on every request 
     var response = client.Execute(request); 
     return response; 
    } 

    public HttpStatusCode ScheduleTask(DateTime date, Uri url, string httpMethod, Uri callback = null) 
    { 
     var request = new RestRequest(Method.POST); 
     request.Resource = "jobs.json"; 
     request.AddParameter("job[uri]", "http://develop.myapp.com/Something"); 
     request.AddParameter("job[at]", "2012-06-31T18:36:21"); 
     request.AddParameter("job[method]", "GET"); 
     var response = Execute(request); 
     return response.StatusCode; 
    } 

的問題是,它始終是returnig HTTP 422

請幫助。

+0

'422無法處理Entity' - 使用Fiddler看什麼實際上是走出去,確保它看起來像你期望的那樣。 – 2012-03-01 21:30:56

+0

我沒有專家對HTTP,所以我wouldnt肯定如何期待它看起來......和提琴手是不是很友善的新手:( – ignaciofuentes 2012-03-01 21:32:36

+0

只是看着時間的應用程序。不知道爲什麼你不會只使用Quartz.Net可用http ://quartznet.sourceforge.net/ – Jeremy 2012-03-01 21:39:28

回答

1

所以這就是我最終的結果。 在這裏找到一個樣本 http://johnsheehan.me/blog/building-nugetlatest-in-two-hours-3/

public HttpStatusCode ScheduleTask(DateTime date, Uri url, string httpMethod, Uri callback = null) 
     { 
      var request = new RestRequest("jobs.json?apikey={apikey}&job[uri]={uri}&job[at]={at}&job[method]={method}", Method.POST); 
      request.AddUrlSegment("uri", "http://develop.myapp.com/Something"); 
      request.AddUrlSegment("at", "2012-03-31T18:36:21"); 
      request.AddUrlSegment("method", "GET"); 
      var response = Execute(request); 
      return response.StatusCode; 
     } 

林不完全確定的時候,我應該使用AddParameter,當我應該使用AddUrlSegment 但反正現在工作

+0

我之所以對該示例做網址段的原因是因爲它們的API需要POST請求,而不是使用POST參數,而是使用URL參數,這是一個奇怪的組合。 – 2012-03-04 02:11:02

+0

gotcha。謝謝。 – ignaciofuentes 2012-03-05 18:34:55

+0

請記住,最好的方法在這個服務中傳遞一個時間是:'request.AddUrlSegment(「at」,nextRun.ToString(「yyyy-MM-ddTHH:mm:ss Z」));' – balexandre 2012-08-28 13:06:35

相關問題