您好我的网络服务中有一个方法如下
[HttpGet]
public HttpResponseMessage RegenerateReport(/*string reportObject*/)
{
var result = new HttpResponseMessage(HttpStatusCode.OK);
result.Content = new StringContent("Operation completed.");
return result;
}
它工作正常但我实际上希望能够将序列化的JSON对象发送到此函数。
另外,我尝试在此函数上使用[HttpPost]标记并从我的代码调用如下
var data = Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(obj));
string _BaseUrl = ConfigurationManager.AppSettings["WebAPIBaseURL"];
HttpWebRequest request = WebRequest.Create(string.Format("{0}{1}",
_BaseUrl,
"test/RegenerateReport?FileName=" + RCFileName)) as HttpWebRequest;
// Set type to POST
request.Method = "Post";
request.ContentType = "application/xml";
request.ContentLength = data.Length;
using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
返回
请求的资源不支持http方法'GET'。
更新 现在删除了此错误,因为我已将标签[HttpGet]和[HttpPost]添加到我的Web方法中。现在的问题是如何将序列化对象传递给Web服务方法。谢谢!
答案 0 :(得分:1)
如果您想在网络服务中提交一些数据,您应该始终使用[HttpPost]。
我认为你的消费者是错的,没有做POST请求。我通常使用Microsoft.AspNet.WebApi.Client包,示例代码可能如下所示:
.cer
只需替换您需要的参数(网址,类型,正文)