2015-12-29 84 views
0

下午好,發送日期時間到API休息

我試圖使用RestSharp圖書館做類似的東西發送日期時間:

RestClient httpClient = new RestClient(APIurl); 
RestRequest request = new RestRequest("/Get", Method.POST); 
string dateTime = model.fireDiscoveryDateTime.ToString("yyyy-MM-ddThh:mm:ss.fffZ"); 

request.AddObject(new GetConflictsRequestModel() 
      { 
       token = model.token, 
       f = "json", 
       pooLatitude = model.pooLatitude, 
       pooLongitude = model.pooLongitude, 
       fireDiscoveryDateTime = dateTime, 
       dispatchCenterId = model.dispatchCenterId 
      }); 
IRestResponse<GetConflictsResponseModel> conflictsResponse = httpClient.Execute<GetConflictsResponseModel>(request); 

沒有fireDiscoveryDateTime我沒有任何問題,但是當我嘗試解析日期時間到ISO-8601,我有這個問題,並執行請求的內容是下一個:

"{\"success\":false,\"error\":{\"code\":8006,\"description\":\"Unable to construct conflict query.\\n\"}}" 

如果我使用一些程序做後期像郵遞員,我複製&貼我得到執行這個節目,我沒有這個錯誤的所有參數和返回這就是我想要的:

{"conflicts":[]} 

我不」知道我在做什麼錯

+1

首先,你要'HH'而不是'hh'。但你爲什麼要自己格式化?我期望你的請求模型有一個'DateTime'並且讓RestSharp爲你做格式化。 –

+0

如果我不格式化它,客戶端會返回類似「{\」success \「:false,\」error \「:{\」code \「:8004,\」description \「:\」\\ nfireDiscoveryDateTime :無效的類型。預期日期時間。\\ r \\ n \\ n \「}}」 – Argon

+0

您可能會考慮使用格式字符串'「o」'。輸出應符合ISO-8601標準。在此處閱讀更多信息:https://msdn.microsoft.com/en-us/library/az4se3k1%28v=vs.110%29.aspx#Roundtrip – SaxxonPike

回答

0

如果我理解正確fireDiscoveryDateTime是DateTime和您嘗試將字符串分配給它,不要試圖解析它,然後再轉換爲datetime,只是試試這個:

request.AddObject(new GetConflictsRequestModel() 
      { 
       token = model.token, 
       f = "json", 
       pooLatitude = model.pooLatitude, 
       pooLongitude = model.pooLongitude, 
       fireDiscoveryDateTime = model.fireDiscoveryDateTime, 
       dispatchCenterId = model.dispatchCenterId 
      });