Передача строкового параметра в службу RESTful во время действия POST - PullRequest
0 голосов
/ 28 октября 2011

У меня RESTful-сервис по следующей методике:

[WebInvoke] 
string GetDataFromStringAsString(string xmlString); 

Мой клиентский вызов метода выглядит следующим образом:

var client = new RestClient(); 
client.BaseUrl = serviceBaseUrl; 
var request = new RestRequest(method){RequestFormat = DataFormat.Xml}; 
request.Resource = resourceUrl; 
request.AddParameter("text/xml", requestBody, 
ParameterType.RequestBody); 
var response = client.Execute(request); 

Давайте возьмем строку для отправки в качестве «Hello World».

Теперь строка, которую я публикую в вышеупомянутом методе, дает мне 400 Bad запрос. Чтобы заставить это работать, я должен был обернуть вышеупомянутую строку в элемент, как показано ниже:

<string xmlns="http://schemas.microsoft.com/2003/10/ 
Serialization/">Hello World</string> 

Теперь, когда я отправляю приведенную выше строку, я получаю ответ об успехе от сервер.

Почему я должен вручную обернуть строку, чтобы она заработала? Является есть способ, которым я могу достичь, чтобы разместить строку, не делая выше вручную.

1 Ответ

0 голосов
/ 28 октября 2011

Единственный другой способ, который мне известен, - это использовать stream в качестве входного параметра. например,

[WebInvoke] 
string GetDataFromStringAsString(stream xmlString);

Проблема с .Net 4 WCF REST заключается в том, что в основном WCF знает, как передавать только два типа информации, либо XML, либо поток байтов. Лично я бы использовал WCF Web API вместо стандартной библиотеки WCF REST, потому что вы столкнетесь с множеством подобных проблем.

...