Сложные запросы HTTP POST с .NET - PullRequest
1 голос
/ 18 февраля 2010

У меня есть метод веб-службы, разработанный с использованием .NET 3.5 (VS2008), который ожидает несколько строк (имя пользователя, пароль, тема, тип файла) и двоичный документ, кодированный в Base64.

Я включил SOAP и HTTP POST. Хотя SOAP работает отлично, невозможно отправлять HTTP-запросы POST. Сервер отвечает: «Серверу не удалось обработать запрос. ---> Недопустимые данные на корневом уровне. Строка 1, позиция 1».

Клиенты используют этот метод для загрузки своих документов из своих приложений.

Мне сказали, что .NET не поддерживает сложные структуры, использующие HTTP POST. Есть ли способ поддержать это?

Ответы [ 2 ]

1 голос
/ 19 февраля 2010

.NET поддерживает сложные структуры, использующие POX (обычный старый xml) с httpBinding. Вот статья, которая объясняет, как ее настроить: http://fluxcapacity.net/2007/11/06/how-to-create-restpox-web-services-with-wcf/

Примечание. Все обновления dap SOAP, XML и JSON по-прежнему работают по протоколу HTTP POST - SOAP просто оборачивает полезную нагрузку дополнительной разметкой, которая фактически просто добавляет дополнительные издержки и сложность для клиентов веб-сайтов (например, Ajax).

Если вы хотите, чтобы ваш тот же веб-сервис работал через SOAP, а также с другими конечными точками, например, XML или JSON вас может заинтересовать эта платформа веб-сервисов с открытым исходным кодом , которая включает все эти конечные точки без какой-либо дополнительной настройки.

0 голосов
/ 18 февраля 2010

Звучит так, как будто вы хотите перейти от настольного приложения к веб-приложению asp.

Хотя это, как правило, отличная идея, я думаю, что вы будете бороться с трудностями, пытаясь разместить файлы через http/ Форма для вашего веб-сервиса.Хотя технически это возможно, мне трудно думать о реализации.

Возможно, вам повезет больше, если вы используете форму в качестве прокси-сервера с вашими входными переменными и входным файлом для отправки в форму, например, веб-форму.и используйте код в веб-форме для раскрутки экземпляра вашего класса веб-сервиса (нет необходимости использовать прокси, вы уже на своей стороне провода).

Если это не имеет смысла, позвольте мнезнать, и если это не может быть сделано в соответствии с вашим сценарием, обновите ваш вопрос, чтобы более четко указать желаемый результат.

Если вы делаете это через Ajax, украсьте свой класс обслуживания атрибутом [ScriptService] и отправьте JSON через xmlhttp,Вы можете легко отправлять сложные аргументы.

см. Инструкции для http://www.codeproject.com/Articles/38999/Consuming-ASP-net-WebServices-WCF-Services-and-sta.aspx.

Если нет, пожалуйста, уточните, что делает проводка и как вы упаковываете данные.

...