我如何 return 从我的 Web API 中的方法到 main 的 HTTP 状态代码?
How do I return the HTTP Status Code from a method in my Web API to main?
我正在开发一个可以从现有网络执行一些方法的控制台应用程序 API。我希望控制台应用程序写入返回的状态代码,但我正在努力寻找有效的语法。
例如,这里有一个更新方法,除了网络响应之外,它目前正在正常工作。
Console.WriteLine("Please enter a valid order item number for the specific data you want to update:");
string oNum = Console.ReadLine();
//more prompts for user to enter data to update
...
var update = _service.UpdateOrder(oNum, oProc, oProcDate, oComplete);
Console.WriteLine("Status code: {0}", (update.StatusCode));
我明白为什么我当前的状态代码响应不起作用。我已经尝试了很多其他的东西,但我现在只是被困住了。我错过了什么?
编辑
这里是_service.UpdateOrder
引用的代码:
public List<Stream> UpdateOrder(string orderID, bool processing, DateTime procDate, bool Complete)
{
var request = new RestRequest(StreamUrl, Method.PUT)
{
RequestFormat = DataFormat.Json
};
request.AddParameter("OrderID", orderID);
...
var response = _client.Execute<List<Stream>>(request);
if (response.StatusCode == System.Net.HttpStatusCode.Created || response.StatusCode == System.Net.HttpStatusCode.OK)
return response.Data;
else
throw new Exception("Invalid input. Table could not be updated.");
您遇到的问题是您正在从 UpdateOrder
方法中 returning stream
。
目前您只能在 UpdateOrder
方法中访问 StatusCode
属性,就像您现在这样:
if (response.StatusCode == System.Net.HttpStatusCode.Created)
如果您想从调用代码访问 StatusCode
属性,则需要从 UpdateOrder
访问 return IRestResponse
,如下所示:
public IRestResponse UpdateOrder(string orderID, bool processing, DateTime procDate, bool Complete)
{
var request = new RestRequest(StreamUrl, Method.PUT)
{
RequestFormat = DataFormat.Json
};
request.AddParameter("OrderID", orderID);
...
var response = _client.Execute<List<Stream>>(request);
if (response.StatusCode == System.Net.HttpStatusCode.Created || response.StatusCode == System.Net.HttpStatusCode.OK)
return response;
else
throw new Exception("Invalid input. Table could not be updated.");
}
然后在您的调用代码中:
Console.WriteLine("Please enter a valid order item number for the specific data you want to update:");
string oNum = Console.ReadLine();
//more prompts for user to enter data to update
...
var update = _service.UpdateOrder(oNum, oProc, oProcDate, oComplete);
Console.WriteLine("Status code: {0}", (update.StatusCode));
// You can access the List<Stream> from update.Data
我正在开发一个可以从现有网络执行一些方法的控制台应用程序 API。我希望控制台应用程序写入返回的状态代码,但我正在努力寻找有效的语法。
例如,这里有一个更新方法,除了网络响应之外,它目前正在正常工作。
Console.WriteLine("Please enter a valid order item number for the specific data you want to update:");
string oNum = Console.ReadLine();
//more prompts for user to enter data to update
...
var update = _service.UpdateOrder(oNum, oProc, oProcDate, oComplete);
Console.WriteLine("Status code: {0}", (update.StatusCode));
我明白为什么我当前的状态代码响应不起作用。我已经尝试了很多其他的东西,但我现在只是被困住了。我错过了什么?
编辑
这里是_service.UpdateOrder
引用的代码:
public List<Stream> UpdateOrder(string orderID, bool processing, DateTime procDate, bool Complete)
{
var request = new RestRequest(StreamUrl, Method.PUT)
{
RequestFormat = DataFormat.Json
};
request.AddParameter("OrderID", orderID);
...
var response = _client.Execute<List<Stream>>(request);
if (response.StatusCode == System.Net.HttpStatusCode.Created || response.StatusCode == System.Net.HttpStatusCode.OK)
return response.Data;
else
throw new Exception("Invalid input. Table could not be updated.");
您遇到的问题是您正在从 UpdateOrder
方法中 returning stream
。
目前您只能在 UpdateOrder
方法中访问 StatusCode
属性,就像您现在这样:
if (response.StatusCode == System.Net.HttpStatusCode.Created)
如果您想从调用代码访问 StatusCode
属性,则需要从 UpdateOrder
访问 return IRestResponse
,如下所示:
public IRestResponse UpdateOrder(string orderID, bool processing, DateTime procDate, bool Complete)
{
var request = new RestRequest(StreamUrl, Method.PUT)
{
RequestFormat = DataFormat.Json
};
request.AddParameter("OrderID", orderID);
...
var response = _client.Execute<List<Stream>>(request);
if (response.StatusCode == System.Net.HttpStatusCode.Created || response.StatusCode == System.Net.HttpStatusCode.OK)
return response;
else
throw new Exception("Invalid input. Table could not be updated.");
}
然后在您的调用代码中:
Console.WriteLine("Please enter a valid order item number for the specific data you want to update:");
string oNum = Console.ReadLine();
//more prompts for user to enter data to update
...
var update = _service.UpdateOrder(oNum, oProc, oProcDate, oComplete);
Console.WriteLine("Status code: {0}", (update.StatusCode));
// You can access the List<Stream> from update.Data