J'ai un service WCF exposé avec un point de terminaison webHttpBinding.Sérialisation d'un objet dans le corps d'une requête WCF à l'aide de webHttpBinding
[OperationContract(IsOneWay = true)]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare,
UriTemplate = "/?action=DoSomething&v1={value1}&v2={value2}")]
void DoSomething(string value1, string value2, MySimpleObject value3);
En théorie, si j'appelle cela, les deux premiers paramètres (valeur1 & valeur 2) sont tirées de l'Uri et une finale (value3) devraient être désérialisé du corps de la demande.
En supposant que j'utilise Json comme RequestFormat, quelle est la meilleure façon de sérialiser une instance de MySimpleObject dans le corps de la requête avant de l'envoyer? Ceci, par exemple, ne semble pas fonctionner:
HttpWebRequest sendRequest = (HttpWebRequest)WebRequest.Create(url);
sendRequest.ContentType = "application/json";
sendRequest.Method = "POST";
using (var sendRequestStream = sendRequest.GetRequestStream())
{
DataContractJsonSerializer jsonSerializer =
new DataContractJsonSerializer(typeof(MySimpleObject));
jsonSerializer.WriteObject(sendRequestStream, obj);
sendRequestStream.Close();
}
sendRequest.GetResponse().Close();
J'ai supprimé des références à REST de cette question car cela ne fait que créer de la confusion. Si vous faisiez quelque chose de RESTful alors cette question serait sans importance. –
Suggestion: essayez-le avec ce dernier paramètre étant un int et commencez par travailler. –
John Saunders: Je l'ai déjà fait. Cela fonctionne bien sans le paramètre object et avec l'objet remplacé par un int. –