java - POST curl 请求在 Spring tc 服务器上返回语法错误

标签 java spring curl

我是 Spring、STS、MVC 和 Web 开发的新手。

我有一个可用的基于 Spring REST 的 Web 应用程序。我还有一个可以运行的java客户端。我遵循了这两个教程:

  1. RESTful webservices with Spring
  2. Get started with Spring MVC

我能够做的是在同一项目中使用 java 客户端并使用 RestTemplate postForLocation 方法。有用!但是,现在我希望客户端是 iPhone,但我不知道该怎么做。在java客户端中,RestTemplate使用com.project.Transaction类做了一个帖子。

如果我这里错了,请纠正我。在 XML 文件中,restTemplate“messageConverter”属性设置为 jaxbMarshaller,它是一个 Jaxb2Marshaller 类,其中“Transaction”作为边界类之一。我不明白它的细节,但我假设 RestTemplate 接受 Transaction 对象并将其编码到 XML 中,该 XML 作为 POST 请求发送到服务器。

第一个问题: 有什么方法可以看到编码对象(即:输出)的样子吗?我正在使用 STS,请具体说明,因为我是新手。例如,发送的数据可能类似于 <xml ...

第二个问题: 我正在尝试使用curl 发出与java 客户端类似的POST 请求。这是我的 curl 请求:

curl -X POST -H 'Accept:application/xml' -H 'Content-Type: application/xml' http://localhost:8080/BarcodePayment/transactions/ --data "<?xml version="1.0" encoding="UTF-8"?><transaction><amount>3.1</amount><id>5</id><paid>true</id></transaction>"

当我这样做时,我收到一条 STATUS 400: 语法错误消息。

第三个问题: 我希望能够更好地理解细节。我从here查看了RestTemplate的源代码。其中,postForLocation 方法使用 HttpEntityRequestCallback,我在 Google 中找不到任何信息。我在java API文档中找到了HttpHeaders。但是,在 RestTemplate 中,它们调用 javax.ws.rs.core -> HttpHeaders 下的 Java API 文档中不存在的 getLocation() 方法。 。我怎样才能更好地理解这些东西?

我知道这是很多问题。谢谢您的帮助!如果您需要更多代码片段,请告诉我,我很乐意提供!

详细信息: 事务 Controller

    @RequestMapping(method = RequestMethod.POST)
    public View addTransaction(@RequestBody Transaction transaction)
    {
        transactionService.saveTransaction(transaction);
        return new RedirectView("/transactionsView/"+ transaction.getId());
    }

最佳答案

您的 xml 不正确:

<transaction><amount>3.1</amount><id>5</id><paid>true</id></transaction>
                                                      ^^^ should be /paid

关于java - POST curl 请求在 Spring tc 服务器上返回语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7195815/

相关文章:

java - 如何只运行一个测试?

java - 想要提高编程的数学技能

java - @Value 中的 SpEL 重构(加密属性)

Java - OpenCV java.lang.NoClassDefFoundError 异常

java - spring+hibernate 和@Transactionl 注解,是如何工作的?

rest - DockerHub API : List ongoing builds

java - 需要解释,带有嵌套 allOf 的 applyAsync 将 CompletionStage 视为已完成

java - 无法通过 Selenium 和 WebDriver 定位元素

php - cURL header 之间的区别

php - 讨论 API : create comment as guest