【问题标题】:POST curl request returns syantactic error on Spring tc serverPOST curl 请求在 Spring tc 服务器上返回语法错误
【发布时间】:2011-08-25 19:04:17
【问题描述】:

我是 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() 方法。我怎样才能更好地理解这些东西?

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

详情: 事务控制器

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

【问题讨论】:

    标签: java spring curl


    【解决方案1】:

    您的 xml 不正确:

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

    【讨论】:

    • 感谢 Marc 指出我的错误,但我仍然收到一个语法错误。
    【解决方案2】:

    事实证明我必须对数据使用单引号。在 --data "

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多