REST, как отправить данные с клиента на сервер, используя POST? - PullRequest
2 голосов
/ 30 июня 2010

Я пытаюсь отправить данные с моего клиента отдыха на мой сервер отдыха ...

Я создал сервер отдыха, отправляющий клиенту xml, и это работает хорошо.Однако, отправляя данные с клиента на сервер, я испытываю трудности.

Клиент:

_httpClientRead = new HttpClient("http://127.0.0.1:8000/");
var form = new HttpUrlEncodedForm();
form.Add("startDate", startDate);
_httpClientRead.Post("test", form.CreateHttpContent())

Сервер:

[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "test")]
Meeting CreateNewMeeting(string startDate);

Проблема, похоже,быть HttpUrlEncodedForm на стороне клиента.Если я отправляю пустой объект HttpUrlEncodedForm в запросе post, сервер получает запрос.При добавлении атрибутов HttpUrlEncodedForm сервер никогда не получает запрос, и нет сообщений об ошибках!

Что мне здесь не хватает?(сервер возвращает XML)

Как отправлять почтовые данные на сервер?

Спасибо

Ответы [ 2 ]

2 голосов
/ 02 июля 2010

Я думаю, что проблема в том, что вы используете HttpUrlEncodedForm на стороне клиента, в то время как на стороне сервера по умолчанию используется Xml.Для ясности установите формат запроса на стороне сервера равным RequestFormat = WebMessageFormat.Xml (установите это в атрибуте WebIncoke).После этого вы можете настроить свой клиент для отправки действительного XML.Также убедитесь, что вы используете правильное пространство имен XML.Самый простой способ справиться с этим - использовать функцию, которая автоматически создаст для вас контент:

var httpContent = HttpContentExtensions.CreateDataContract(objectToSendToServer);
// And then send it using post: 
_httpClient.Post("serviceUrl", httpContent); 

Обратите внимание, что вам также нужно установить DefaultHeader на HttpClient в значение «application / xml».

2 голосов
/ 30 июня 2010

WCF ожидает, что данные будут отправлены сериализованным DataContractSerializer. Вы не можете отправлять другие типы мультимедиа, например application/x-www-form-urlencoded по умолчанию.

Смотрите этот вопрос о том, как это сделать. Лучший способ поддержки публикации данных "application / x-www-form-urlencoded" с WCF?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...