我不确定你想要传递原始 JSON 字符串的动机是什么,但如果是为了确保你只传递一个小的 JSON 有效负载,你可以放心地使用 Json/Jsv ServiceClients,因为它们不包含 null值,因此只会传递您填充的字段。
您可以通过直接使用 Json 序列化程序来验证序列化的内容。
Console.WriteLine(JsonSerializer.SerializeToString(cls));
如果您只想测试/调试您的服务,最好的方法是通过使用查询字符串填充字段来简单地使用浏览器,即:
http://localhost/myservice/postrequest?Field1=value1&Field2=value2
在大多数情况下,如果您想传入原始 JSON 字符串,您将需要使用另一个 HTTP 客户端,在这种情况下,您最好调用 Web 服务 POST'ing 表单数据,因为所有 HTTP 客户端都支持它,而且您不需要 JSON 序列化程序。例如,这里是如何通过带有 curl 的 HTTP POST 调用相同的服务:
curl -d "Field1=value1&Field2=value2" http://localhost/myservice/postrequest
您可以通过许多其他方式调用相同的服务,完整列表请参见Service Stack 的 Hello World 示例。以下是使用 HTML 调用它的方式:
<form action="http://localhost/myservice/postrequest" method="POST">
<input type="text" name="Field1" value="value1" />
<input type="text" name="Field2" value="value2" />
</form>
由于您是从 Web 浏览器发布它,Service Stack 将返回 HTML,但如果您想查看 JSON 结果,您只需将?format=json附加到 url。
或者您可以简单地使用 JavaScript 和 jQuery 发布到您的 Web 服务,下面的示例将返回结果为 JSON,它会自动转换为 JS 对象:
$.ajax({
type: 'POST',
url: "http://localhost/myservice/postrequest",
data: {Field1: "value1", Field2: "value2"},
success: function(r) { alert(r.Result) },
dataType: "application/json"
});
使用网络浏览器调试服务的好处是您可以使用内置的网络检查器(即 Chrome 中的网络检查器)来查看网络服务的完整请求/响应。
如果您不熟悉它,我还建议您熟悉Fiddler,它可以让您轻松分析 HTTP 流量。