gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 08:32:30 25 4
gpt4 key购买 nike

我是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com