2015-12-29 4 views
0

Добрый день,Отправка DateTime к API Rest

Я пытаюсь отправить DateTime, используя 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 У меня нет каких-либо проблем, но когда Я пытаюсь разобрать DATETIME в ISO-8601 у меня есть эта проблема и содержание выполнения запроса является следующим:

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

Если я использую какую-то программу, чтобы сделать запись, как POSTMAN и скопироватьвставить все параметры ПОЛУЧИТЬ исполняющие эту программу я не имею эту ошибку, и это вернуть то, что я хочу:

{"conflicts":[]} 

Я «не знаю, что я делаю неправильно

+1

Во-первых, вы хотите 'hH' вместо' hh'. Но почему вы делаете форматирование самостоятельно? Я ожидаю, что ваша модель запроса будет иметь «DateTime» и получит RestSharp для форматирования для вас. –

+0

Если я его не отформатировал, клиент возвращает что-то вроде «{\" success \ ": false, \" error \ ": {\" code \ ": 8004, \" description \ ": \" \\ nfireDiscoveryDateTime : Неверный тип. Ожидаемое значение DateTime. \\ 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 
      }); 
Смежные вопросы