就我而言,我有一个网络服务如下,
[OperationContract]
[WebInvoke(UriTemplate = "services/CreatePerson", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, Method = "POST")]
string CreatePerson(string data);
它期待 JSON 输入。 当我使用 Fiddler 测试此服务时,通过将 JSON 字符串作为请求正文传递如下,
"{"personName":"Joe", "source":"I", "address":"KK Road"}"
和请求标头为
User-Agent: Fiddler
Content-Type: application/json;charset=utf-8
Host: localhost
Content-Length: 54
调试时不会命中服务方法断点。
同时它适用于以下 JSON,如下所示(用单引号替换前一个 json),
"{'personName':'102', 'source':'I', 'address':'KK Road'}"
服务方法不接受 JSON 字符串输入,因为如果我将输入作为"测试"传递,它就会很好地工作。
实际问题在哪里,请帮我找出答案....
我认为你不应该使用首引号和尾随引号!
尝试:
{'personName':'102', 'source':'I', 'address':'KK Road'}
此外,您的方法不应采用字符串参数,而应采用符合 json 的类。
public class M
{
public string personName { get; set; }
public string source { get; set; }
public string address { get; set; }
}
[OperationContract]
[WebInvoke(UriTemplate = "services/CreatePerson", RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json, Method = "POST")]
string CreatePerson(M data);