当前位置: 首页 > 知识库问答 >
问题:

作为JSON的Http响应消息的内容

郁烨
2023-03-14

我有一个ASP.NET的MVC WEB API。出于几个原因(因为没有授权而重定向...),我不能只使用一个简单的对象并在我的控制器方法中返回它。因此,我需要允许我重定向的Http响应消息类。

目前我正在这样做:

var response = new Response { responseCode = Response.ResponseCodes.ItemNotFound };
var formatter = new JsonMediaTypeFormatter();
response.Content = new ObjectContent<Response>(response, formatter, "application/json");

..将序列化为JSON的对象转换为HttpResponseMessage的内容。不知何故,我觉得有另一种更好的方法可以做到这一点。对此有什么想法吗?

共有1个答案

苏边浩
2023-03-14

你可以做:

var response = new Response { responseCode = Response.ResponseCodes.ItemNotFound };
Request.CreateResponse<Response>(HttpStatusCode.OK, response);

默认情况下,Web API将根据HTTP请求头中指定的内容类型设置响应的格式,但是在CreateResponse方法上有一些重载,您可以在这些重载中指定类型格式化程序。

你还可以删除 Web API XML 序列化程序,强制所有响应都是 JSON,如果这是你想要的 - 在我的头顶上,我认为这是一个格式化程序。在 HttpConfiguration 上删除方法。

 类似资料:
  • 几个月前,微软决定改变Http响应消息类。以前,您可以简单地将数据类型传递给构造函数,然后返回包含该数据的消息,但现在不行了。 现在,您需要使用Content属性来设置消息的内容。问题是它属于HttpContent类型,我似乎找不到一种方法将字符串转换为HttpContent。 有人知道如何处理这个问题吗?谢谢。

  • 我是JMeter的新手,正在尝试使用JMeter和SMTP发送HTTP请求和电子邮件。 我将JMeter错误作为非HTTP响应代码: < code > Java . net . socket exception/Non HTTP响应消息:连接重置 SMTP错误为500/ 我已完成以下设置: user.properties: hc。参数: 这些更改仍然没有解决我的问题。你能帮助我在哪里更改设置来解决

  • 我正在使用 Jmeter 执行一个脚本进行负载测试。我在两者之间遇到错误,例如。如果我应用了500users的负载,直到250个用户线程成功运行,那么错误来自连接超时错误。然后,它再次运行成功为某些线程,然后出错。 代码如下:- 响应标头: 我需要破坏服务器。 有人能帮我吗?

  • 我有一个场景,从一个网站下载zip文件.当试图击中100个用户与jeter得到成功响应的所有100个用户,但当我尝试做同样的150个用户直到74个用户得到成功响应,这意味着用户下载zip文件没有任何错误,但其余用户得到以下错误:: 获取采样器结果:https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js代码:非HTTP响应代码

  • 记录的Blazemeter脚本在JMeter中不工作,出现以下错误消息。 响应代码:非HTTP响应代码:java.net。SocketException响应消息:非HTTP响应消息:软件导致连接中止:recv失败

  • 我有一个REST服务,它暴露在iPhone和Android客户端上。目前我遵循HTTP代码200、400、401、403、404、409、500等。 还是通过JSON将其放在响应体中更好?