2010-06-30 3 views
2

J'ai du mal à envoyer des données de mon client de repos à mon serveur de repos ...REST, comment envoyer des données du client au serveur en utilisant POST?

J'ai créé un serveur de repos envoyant du xml au client, et cela fonctionne bien. Cependant, en envoyant des données du client au serveur, j'ai du mal.

Client:

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

Serveur:

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

Le problème semble être le HttpUrlEncodedForm du côté client. Si j'envoie un objet HttpUrlEncodedForm vide dans la demande de publication, le serveur reçoit la demande. Lors de l'ajout des attributs HttpUrlEncodedForm, le serveur ne reçoit jamais la requête et il n'y a aucun message d'erreur!

Qu'est-ce qui me manque ici? (le serveur renvoie xml)

Comment les données de publication doivent-elles être envoyées au serveur?

Merci

Répondre

2

Je pense que c'est un problème que vous utilisez HttpUrlEncodedForm côté client, tandis que le côté serveur est Xml. Pour clarifier, définissez le format de la requête côté serveur sur RequestFormat = WebMessageFormat.Xml (définissez-le dans l'attribut WebIncoke). Après cela, vous pouvez configurer votre client pour envoyer un fichier XML valide. Assurez-vous également d'utiliser l'espace de noms xml correct. La meilleure façon de gérer cela est d'utiliser une fonction qui permettra de créer le contenu automagiquement pour vous:

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

Notez que vous devez régler le DefaultHeader sur le HttpClient « application/xml ».

+0

Merci stiank81, qui a résolu mon problème –

Questions connexes