当我尝试向WCF service
发送POST请求时,我无法POST the service request
和can't get response.
我正在使用 WebHttpBinding 而我的WCF service is hosted in Windows service
使用PORT 8181
WCF服务方法:
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "/{cstid}/{deptid}/get/customer/?cstname={cstname}",
BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json)]
Customer CustomerGet(string cstid, string deptid, string cstname);
JQuery POST方法
jQuery.ajax({
type: 'POST',
url: 'http://localhost:8181/mysite/e48/91/get/customer/?',
dataType: 'json',
contentType: "application/json; charset=utf-8",
processData: false,
success: function (data) {
alert(data); // not getting anything :(
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert('Error :' + textStatus);
}
});
有人可以告诉我为什么我无法拨打此服务,我将如何解决此问题?
提前致谢!
答案 0 :(得分:0)
你的UriTemplate:
/{cstid}/{deptid}/get/customer/?cstname={cstname}
您的jQuery网址:
/e48/91/get/customer/?
看起来你错过了cstname
,因此运行时的值将为null,因为查询字符串参数不需要与UriTemplate匹配。你没有显示你的实现,但我猜你在查找Customer
接受null,但后来没有找到实际的实例而只返回null。
答案 1 :(得分:0)
因为你的UriTemplate是
UriTemplate = "/{cstid}/{deptid}/get/customer/?cstname={cstname}",
您至少应该传递{cstname}的参数。例如,试试这个:
jQuery.ajax({
type: 'POST',
url: 'http://localhost:8181/mysite/e48/91/get/customer/?',
data: { cstname: "nunu" },
dataType: 'json',
contentType: "application/json; charset=utf-8",
processData: false,
success: function (data) {
alert(data); // not getting anything :(
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert('Error :' + textStatus);
}});
在我看来,将WCF Web Http服务用于除WebGet操作之外的任何其他操作都比它的价值更麻烦。