W mojej usłudze WCF (chmura lazurowa) chcę wspierać JSON. Tworzę niektóre metody testowania, aby sprawdzić, czy wszystko działa. Mogę dostać GET zwraca się do pracy, ale kiedy robię post z prostego parametru będzie zawsze dotrzesz:Żądanie WCS JSON POST, parametr pojedynczego ciągu niewiążący i zwracający 400
The remote server returned an error: (400) Bad Request.
Jeśli nie wysłać parametru spowoduje, że wykonanie metody, ale z wartość pusta jako parametr oczywiście. Próbowałem różnych formatów JSON i WebMessageBodyStyle, ale żaden nie wydaje się działać.
Jeśli zmienię typ parametru na Strumień, otrzymam dane, ale muszę je ręcznie deserializować. To nie powinno być konieczne, prawda?
Interfejs:
[OperationContract]
[WebInvoke(UriTemplate = "Test",
Method = "POST",
BodyStyle = WebMessageBodyStyle.WrappedRequest,
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json)]
string Test(string data);
IMPL: klient
public string Test(string data)
{
return "result is " + data;
}
Test:
WebClient client = new WebClient();
client.Headers["Content-type"] = "application/json";
client.Encoding = System.Text.Encoding.UTF8;
string jsonInput = "{'data':'testvalue'}";
string postResponse = client.UploadString(postUrl, jsonInput);
Console.WriteLine("post response: " + postResponse);