我有一个WCF REST服务,它有两个简单的方法。
[OperationContract]
[WebInvoke(Method="GET",
ResponseFormat=WebMessageFormat.Json,
RequestFormat=WebMessageFormat.Json,
UriTemplate = "request/{controlType}")]
string GetJSONConfig(string controlType);
[OperationContract]
(Method = "POST",
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json,
UriTemplate = "save/{jsonString}")]
string SaveJSON(string jsonString);
第一种方法是从javascript代码调用。但是我将JSON数据发送到第二个并获得404错误。
有人遇到过这种类型的问题。
$(document).ready(function () {
var circle = function () {
this.x = 100;
this.y = 100;
this.r = 10;
};
var x = new circle();
var arr = [];
arr.push(x);
var jsonData = JSON.stringify(arr);
$('#serviceCall').click(function () {
$.ajax(
{
url: 'http://localhost:52506/JsonDataService.svc/save/',
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify(arr),
processData: true,
success: function (data) {
document.getElementById("data").value = data;
},
error: function (data) {
document.getElementById("data").value = data;
}
});
});
});
这是javascript代码库。
答案 0 :(得分:0)
您尝试拨打POST电话的方式不正确。
我建议您创建DTO类,实际上是对JSON的投影。
如果我没弄错的话,WCF会使用DataContractSerializer自动映射它。
样品:
[OperationContract]
[WebInvoke(UriTemplate = "/PlaceOrder",
RequestFormat= WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json, Method = "POST")]
bool PlaceOrder(OrderContract order);
如果您想要原始流,请执行以下操作:
[OperationContract(Name = “MyMethod”)]
[WebInvoke(Method = “POST”,
UriTemplate = “blablahblah”)]
string Method(Stream data);
答案 1 :(得分:0)
它有点语法错误!这是正确的。
[OperationContract]
[WebGet(ResponseFormat=WebMessageFormat.Json,
UriTemplate = "request/{controlType}")]
string GetJSONConfig(string controlType);
当您使用 GET 时,您无需在大多数时间指定请求格式。因为您可以从网址调用 GET 方法。
POST
[OperationContract]
WebInvoke(Method = "POST",
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json,
UriTemplate = "save/{jsonString}")]
string SaveJSON(string jsonString);
在此,您无需指定UriTemplate = "save/{jsonString}"
,而UriTemplate = "save"
将完成此任务。 .NET会自动将 jsonString 转换为JSON。您只需要从客户端发送JSON(在您的JS代码中)。我希望它对你有所帮助!