[英]C# Rest Webservice with ASP.NET MVC 4
我使用ASP.NET MVC 4 Web應用程序創建了Rest Web服務。 如果我想使用該服務並發送包含requestbody的請求,則輸入參數CoreMessage項始終為null。 我看了一些示例教程和一些示例代碼,但無法修復該錯誤。
我的Rest Client的一些代碼
CoreMessage message = new CoreMessage() { Source = "Dummy", Date = DateTime.Now, Data = "abcd" };
var url = "http://localhost:12294/api/message";
var method = "POST";
string reponseAsString = "";
try
{
var request = (HttpWebRequest)WebRequest.Create(url);
request.Method = method;
using (Stream requestStream = request.GetRequestStream())
using (StreamWriter writer = new StreamWriter(requestStream))
{
writer.Write(message);
}
}
catch (Exception ex)
{
reponseAsString += "ERROR: " + ex.Message;
}
我的具有Post功能的Controller看起來像這樣
public MessageRepository repository = new MessageRepository();
public HttpResponseMessage PostMessage(CoreMessage item)
{
bool status = repository.TransmitMessage(item);
var response = Request.CreateResponse<bool>(HttpStatusCode.Created, status);
return response;
}
我的模特
public class CoreMessage
{
public string Source { get; set; }
public DateTime Date { get; set; }
public string Data { get; set; }
}
有幾件事可以嘗試
首先,放置[FromBody]
屬性:
public HttpResponseMessage PostMessage([FromBody] CoreMessage item)
然后嘗試將Content-Type
標頭添加到您的請求中
request.ContentType = "application/json; chatset=utf-8"
而且,在寫入流之前,必須先使其為JSON,否則無法將對象寫出。 該方法取決於用於JSON序列化的框架。 最受歡迎的應用程序之一是JSON.NET,它非常容易通過NuGet軟件包管理器進行安裝。 安裝后,您可以將CoreMessage序列化為以下字符串:
string messageString = JSONConvert.SerializeObject(message);
然后以UTF-8編碼編寫:
using (StreamWriter writer = new StreamWriter(requestStream, Encoding.UTF8))
{
writer.Write(messageString);
}
畢竟,如果仍然無法使用,您可以嘗試在Chrome中使用Dev HTTP Client 。 該工具將允許您制作原始HTTP請求。 您的請求應具有Content-Type
作為application/json; charset=utf-8
application/json; charset=utf-8
並將POST數據作為JSON字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.