我正在使用vs2017在asp.net上进行开发;我正在使用Web服务。 我对wcf rest网络服务有问题, 我使用下面的代码通过GET方法连接到Web服务。
[OperationContract]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "json/{id}")]
string JSONData(string id);
现在我想将方法更改为“ POST”。如何使用这种方法发送参数?
在客户端
<form id="form1" action="RestServiceWareHouse.svc/jsonUserLogin" method="post">
<div>
<input id="id" name="id" type="text" />
<input id="pass" name="pass" type="text" />
<input id="Submit1" type="submit" value="submit" />
</div>
</form>
但是我无法发送参数。
在服务器端,我的身份验证用户功能
public string JSONDataLogin(string username,string password)
{
DataBaseConnectionClass GetUserList = new DataBaseConnectionClass();
response = GetUserList.select("my select query are here");
if (response.Rows.Count > 0)
{
return js.Serialize("true");
}
return js.Serialize("no found");
}
我在GET方法中的代码看起来不错,但是在POST方法中我无法获取参数。
答案 0 :(得分:0)
如果您想使用WCF创建一个Restful post操作,请尝试将以下属性添加到您的操作中
[WebInvoke(Method = "POST", UriTemplate = "getdata",ResponseFormat = WebMessageFormat.Json,BodyStyle = WebMessageBodyStyle.Bare,RequestFormat = WebMessageFormat.Json)]
[OperationContract(Name = "PostData"), FaultContract(typeof(CustomFault))]
ResponseModel PostData(InputModel requestData);
使用Post
作为操作从客户端发布数据,并在正文中将参数传递为
{
"Key": "Value"
}
如果您的InputModel
包含以下属性
public class InputModel
{
public string Key { get; set; }
}
答案 1 :(得分:0)
尝试以下代码:
[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.WrappedRequest,
ResponseFormat = WebMessageFormat.Json, UriTemplate = "/json")]
void PostData(string id);
答案 2 :(得分:0)
namespace RestService
{
[ServiceContract]
public interface RestServiceWareHouse
{
[OperationContract]
[WebInvoke(Method = "POST",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "/jsonUserList")]
string JSONData();
}
}
.svc文件中的我的功能
public string JSONData()
{return "json format data";}