angularjs + spring mvc + json post请求

2023-12-27

我一直在网上对我的问题进行一些研究,我觉得我的代码反映了大多数示例中编写的内容 - 然而,它仍然不起作用。这就是我的问题。

长话短说,我想发送 POST 请求以将新项目添加到某些“后端”。对于 REST API,我使用 Spring MVC,为了发送请求,我使用 AngularJS 中的 $http

这就是我调用 POST 请求的方式

    $scope.testAddItem = function(){
    $http({
        'url' : 'addNewItem',
        'method' : 'POST',
        'headers': {'Content-Type' : 'application/json'},
        'data' : $scope.newItem
    }).success(function(data){
        $scope.marketForm.texts.push({'text' : data.text});
    })
}

它映射到正确的 URL。问题是我得到以下响应

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<title>Error 400 BAD_REQUEST</title>
</head>
<body><h2>HTTP ERROR 400</h2>
<p>Problem accessing /poll/addNewItem/. Reason:
<pre>    BAD_REQUEST</pre></p><hr /><i><small>Powered by Jetty://</small></i><br/> 

当我单击网站上的按钮以及通过某些 REST 客户端进行测试时,我都会收到此错误。

我已包含在 pom.xml 中的依赖项

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.2.3</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.2.3</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.2.3</version>
    </dependency>
    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>1.9.13</version>
    </dependency>

需要注意的是 - 通过 GET 发送其他请求是可行的。

我的控制器类

@Controller
@RequestMapping(value = "/")
public class PollController {

@RequestMapping(method = RequestMethod.GET)
public String mainPage(){
    return "poll";
}

@RequestMapping(value = "/getNewElement")
public @ResponseBody
List<PollItem> getNewElement(){

    List<PollItem> listOfItems = new ArrayList<PollItem>(2);

    listOfItems.add(new PollItem("test 1"));
    listOfItems.add(new PollItem("test 2"));

    return listOfItems;
}

@RequestMapping(value = "/addNewItem", method = RequestMethod.POST, consumes =    MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody PollItem addNewElement(@RequestBody PollItem pollItem){
    pollItem.setId(2); // I know it makes no logical sense, but it's just for testing.
    return pollItem;
}

}

有什么线索吗?

EDIT

添加调试模式后,似乎是一些 JSON 解析问题

Method [public com.poll.model.PollItem com.poll.controller.PollController.addNewElement(com.poll.model.PollItem)]

    org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Unexpected character ('a' (code 97)): expected a valid value (number, String, arr
    ay, object, 'true', 'false' or 'null')
    at [Source: HttpInputOverHTTP@5ce15706; line: 1, column: 2]; nested exception is org.codehaus.jackson.JsonParseException: Unexpected character ('a' (code 97)): expected
    a valid value (number, String, array, object, 'true', 'false' or 'null')
    at [Source: HttpInputOverHTTP@5ce15706; line: 1, column: 2]
    at org.springframework.http.converter.json.MappingJacksonHttpMessageConverter.readJavaType(MappingJacksonHttpMessageConverter.java:187)
    at org.springframework.http.converter.json.MappingJacksonHttpMessageConverter.read(MappingJacksonHttpMessageConverter.java:179)
    at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodAr
    gumentResolver.java:138)
    at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:183)

    at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:98)
    at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:79)
    at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:157)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:124)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:738)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:551)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:568)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1111)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:478)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1045)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:199)
    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
    at org.eclipse.jetty.server.Server.handle(Server.java:462)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:279)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:232)
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:534)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:607)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:536)
    at java.lang.Thread.run(Thread.java:724)
    Caused by: org.codehaus.jackson.JsonParseException: Unexpected character ('a' (code 97)): expected a valid value (number, String, array, object, 'true', 'false' or 'null'
    )
    at [Source: HttpInputOverHTTP@5ce15706; line: 1, column: 2]
    at org.codehaus.jackson.JsonParser._constructError(JsonParser.java:1433)
    at org.codehaus.jackson.impl.JsonParserMinimalBase._reportError(JsonParserMinimalBase.java:521)
    at org.codehaus.jackson.impl.JsonParserMinimalBase._reportUnexpectedChar(JsonParserMinimalBase.java:442)
    at org.codehaus.jackson.impl.Utf8StreamParser._handleUnexpectedValue(Utf8StreamParser.java:2090)
    at org.codehaus.jackson.impl.Utf8StreamParser._nextTokenNotInObject(Utf8StreamParser.java:606)
    at org.codehaus.jackson.impl.Utf8StreamParser.nextToken(Utf8StreamParser.java:492)
    at org.codehaus.jackson.map.ObjectMapper._initForReading(ObjectMapper.java:2770)
    at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2718)
    at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1923)
    at org.springframework.http.converter.json.MappingJacksonHttpMessageConverter.readJavaType(MappingJacksonHttpMessageConverter.java:184)
    ... 38 more

EDIT2

看起来它有效,问题是它只支持“(双引号),我想使用单引号。在执行 JSON 时,我是否应该始终使用双引号?

我应该做什么来改变 JSON 映射器的默认行为?


好的,回答这个问题 - 问题是我使用了格式错误的 JSON。我应该使用双引号而不是单引号(这基本上遵循 JSON 标准。我对此很陌生,我有点困惑,因为很多网站在其示例中使用单引号 - 例如谷歌图表)。

{"id":10,"text":"smth smth"}

is good

{'id':10,'text':'smth smth'}

is bad:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

angularjs + spring mvc + json post请求 的相关文章

随机推荐

  • ORA-1555: 快照太旧: 回滚段号

    任何想法 ORA 1555 快照太旧 回滚段号 我收到此错误 但似乎没有任何问题 请说明在什么情况下可能发生以及如何避免 频繁提交可能是导致 ORA 1555 的原因 这都是关于读取一致性的 当你开始查询时 oracle 会记录一个之前的图
  • java.io.IOException:不是带有 class.getResourceAsStream() 的 GZIP 格式

    我正在尝试从 jar 中的资源加载一些 GZIP 数据 但我得到了java io IOException Not in GZIP格式化消息 当我从文件加载相同的数据时 我没有收到任何错误 为什么 这是我用NetBeans编译的maven项目
  • 具有时间格式的 SQL AVG 函数

    所以我正在使用 Google Big Query 并且我想找到整个专栏的平均时间 整个列的时间格式为 hh mm ss 例如 00 19 00 select AVG ride length AS average duration FROM
  • 尝试将非属性列表对象设置为 NSUserDefaults

    我以为我知道是什么导致了这个错误 但我似乎无法弄清楚我做错了什么 这是我收到的完整错误消息 Attempt to set a non property list object
  • 如果我在构建测试覆盖进程完成之前终止它,我可以强制 Perl Devel::Cover 生成覆盖率报告吗?

    如果我能够成功启动 Devel Cover 并且它开始在 cover db 目录中收集数据 我可以终止该进程 然后在事后获取 Devel Cover 或其他实用程序来处理这些二进制 Devel 将运行文件和结构文件覆盖到 HTML 覆盖率报
  • 更改文件描述符 1 以引用不同的文件后,我应该如何管理 ::std::cout ?

    我想要做dup2 fd 1 close fd 并有 std cout写入新的 fd 1 如何重置 std cout所以没什么好笑的 例如 提前冲水就足够了吗 或者还有比这更多的事情要做吗 我也对同样的事情感到好奇 std cin 如果您更改
  • Angular UI 遮罩空占位符

    我正在对日期字段使用 Angular ui mask 指令 并为占位符添加下划线 有没有办法在占位符上不显示任何内容 关于这是一个插件问题 我发现了这个令人惊叹的库 名为 ngMask https github com candreoliv
  • 如何将 1 行的 3 个值应用到每个值的 3 行?

    我有许多具有 1 到 6 个值的 ROWS 例如 Param1 A B C D Param2 B Y Param3 A 我需要像这样改造它 Param1 A Param1 B Param1 C Param1 D Param2 B Param
  • 如何让 cin 只接受数字

    这是代码 double enter number double number while 1 cin gt gt number if cin fail cin clear cin ignore numeric limits
  • 如何在每组中随机选择一行[重复]

    这个问题在这里已经有答案了 假设我有一个数据框 如下所示 df lt data frame Region c A A A B B C D D D D Combo c 1 2 3 1 2 1 1 2 3 4 gt df Region Comb
  • 桶文件、webpack 和 jest

    我对桶文件 webpack 和 jest 有几个问题 我从来没有真正想过它们是如何工作的 现在我正在努力 开玩笑地 在一个还没有测试的更大的应用程序上编写测试 我在大文件夹中有桶文件 例如components 它们看起来像这样 组件 ind
  • reduceLeft可以并行执行吗?

    我刚刚开始学习Scala 所以请耐心等待 我有一个关于 reduceLeft 行为方式的问题 这里有一个例子 List 1 2 3 4 5 reduceLeft 我想知道是否可以同时进行计算 例如 第一回合 过程 1 计算 1 2 过程2计
  • “proxy_pass”不能在正则表达式给出的位置包含 URI 部分

    我开发了一个 URL 缩短 Web 应用程序 它由两个独立的 docker 容器组成 一个包含后端 REST api 另一个包含前端静态网站 这两个容器链接到一个 nginx 容器 该 nginx 容器的配置如下 worker proces
  • 了解 Kafka Streams 中处理器实现中的事务

    在使用 Kafka Streams 的处理器 API 时 我使用如下内容 context forward key value context commit 实际上 我在这里所做的就是每分钟从状态存储发送一个状态到接收器 在 init 方法中
  • 是否可以在一个 EJB 3 bean 中同时使用 @WebService、@Stateless 和 @Singleton?

    我正在使用 EJB 3 和 JBoss AS 6 0 0 Final 我有一个带注释的无状态会话 bean Stateless and WebService 当我添加注释时 Singleton 部署错误 显示消息 name ServiceB
  • 从数组创建自定义对象

    我有一个包含以下元素的数组 我正在尝试从数组创建一个对象 var arr find qty lt 20 limit 5 skip 0 下面是我的代码 我只得到值作为输出 对此的任何帮助都会有帮助 for var i 0 i lt arr l
  • SQL 连接如何工作?

    我试图了解连接内部是如何工作的 以下两个查询的运行方式有何不同 For example A Select FROM TABLE1 FULL JOIN TABLE2 ON TABLE1 ID TABLE2 ID FULL JOIN TABLE
  • 为什么 Python 不优化掉临时变量?

    福勒的提取变量 http refactoring com catalog extractVariable html重构方法 以前引入解释变量 http c2 com cgi wiki IntroduceExplainingVariable
  • 如何使用 RESTful Web 服务创建异步通知系统?

    我有一个通过 RESTful Web 服务提供的 Java 应用程序 我想创建一种机制 以便客户端可以注册事件通知 问题是无法保证客户端程序将是 Java 程序 因此我无法为此使用 JMS 即 如果每个客户端都是 Java 应用程序 那么我
  • angularjs + spring mvc + json post请求

    我一直在网上对我的问题进行一些研究 我觉得我的代码反映了大多数示例中编写的内容 然而 它仍然不起作用 这就是我的问题 长话短说 我想发送 POST 请求以将新项目添加到某些 后端 对于 REST API 我使用 Spring MVC 为了发