2009-05-13 11 views
1

Je me suis cogné la tête contre le mur pendant les deux dernières heures, voici ce que nous essayons de faire: une méthode attend un type primitif/simple comme le corps de la demande. À l'origine nous avons essayé avec un booléen, mais cela n'a pas fonctionné ainsi nous avons essayé avec la ficelle et l'objet. Même chose.Passer le type primitif au service RESTful de WCF

Voici le code côté serveur

[OperationContract] 
[WebInvoke(UriTemplate = "/foo/{foo_id}/bar", Method = "POST", ResponseFormat=WebMessageFormat.JSON)] 
string G(string foo_id, string content); 

Et voici la demande Fiddler:

tête:

User-Agent: Fiddler 
Host: localhost 
Content-Type: 'application/json', 
Content-Length: 19 

Corps:

"hello_world" 

Nous avons essayé d'envelopper "hello_world" dans un objet json, comme {"content": "hello_world"} mais pas de chance.

Des pensées?

+0

J'ai oublié de mentionner le comportement: si je mets un point d'arrêt dans la méthode, il n'est pas touché. Au lieu de cela, je reçois juste une erreur de 400 revenant à Fiddler. – Oli

Répondre

2

fonctionne bien pour moi, voici mon code:

[OperationContract] 
[WebInvoke(UriTemplate = "/foo/{foo_id}/bar", Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)] 
public string G(string foo_id, string content) 
{ 
    return content + foo_id; 
} 

Vous n'avez pas défini le format de demande (une douleur que je sais :))

Voici ma demande Fiddler:

User-Agent: Fiddler 
Content-Type: application/json 
Host: localhost:54287 
Content-Length: 7 
"Hello" 
+0

Je pensais que le format de la requête était pris dynamiquement en fonction du contenu/type? – Oli

+0

Non, c'est ce que HTTP devrait faire, et l'une des nombreuses fonctionnalités que WCF REST n'a pas. – SerialSeb