2013-05-03 2 views
0

Мне нужно создать операцию Post WCF. Мне нужно, чтобы пользователь прошел несколько параметров. Все примеры, которые я вижу, предполагают, что пользователи будут отправлять только один параметр. Как я могу это сделать? Не будет ли URL-адрес, который посылает клиент, действительно долго?WCF JSON Post Operation

 [OperationContract] 
     [WebInvoke(Method = "POST", UriTemplate = "changeStatus/{ID}/{userID}/{activityDate}/{locationID}/{attachmentID}/{descriptionID}", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] 
     void ChangeStatus(Guid ID, Guid userID, DateTime activityDate, Guid locationID, Guid attachmentID = default(Guid), Guid descriptionID = default(Guid)); 
+1

Оберните его в один класс POCO, и это должно быть достаточно простым. И с его пост-операции вы можете просто указать свой URL как changeStatus без какой-либо строки запроса. – Rajesh

+0

Как пользователь может пройти в классе POCO, если я не предоставляю параметр в URITemplate? – Blade3

+0

Каждый Http Post имеет тело сообщения, и вы можете передать объект POCO через тело сообщения. – Rajesh

ответ

0

Вы можете настроить свой метод ChangeStatus получить массив типа KeyValuePair, то вы можете просто цикл по массиву и получить необходимые значения. Обычно я создаю свои веб-службы, когда мне нужно отправить более одного или двух параметров.

Если клиент выполняет POST для вызова вашей услуги, тогда данные могут передаваться как объект, а не в строку запроса, но если он отправляется через строку запроса, тогда да, URL может быть очень длинным.

Смежные вопросы