java - 如何获取 Spring Restful Web 服务中请求正文中发送的字符串?

标签 java spring web-services rest

我有一个 Spring Web 服务方法,我想在其中获取一个字符串作为参数。该字符串在请求正文中发送。我的网络服务类是:

@Controller
@RequestMapping(value = "/users/{uid}/openchart")
public class OpenChartWebService {

    @RequestMapping(method = RequestMethod.POST)
    @ResponseBody
    public String saveABC(@PathVariable("uid") Long uid, 
            @RequestBody String myString) {
            System.out.println("sent string is: "+myString);
            return "something";
    }
}

我的正文请求是:

   {
      "name":"Ramesh"
    }

但这不起作用。这显示“错误请求”HTTP 错误 (400)。如何在 Webservice 方法中发送正文中的字符串以及如何获取正文中发送的字符串?

最佳答案

正如 @Leon 所建议的,您应该将媒体类型添加到您的请求映射中,但也要确保您的类路径上有 Jackson。您还需要将 @RequestBody 参数类型更改为具有“name”属性的类型,而不仅仅是字符串,这样您就不必在之后进行转换。

public class Person {
    private name;

    public getName() {
        return name;
    }
}

如果您的数据对象类似于上面的内容,那么您可以将 @RequestBody 参数设置为 Person 类型。

如果您想要的只是一个字符串,那么也许只需在请求正文中传递“name”的值,而不是具有 name 属性的对象。

关于java - 如何获取 Spring Restful Web 服务中请求正文中发送的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25202211/

相关文章:

java - yii:在js中传递参数

java - 使用 Spring Hibernate SessionFactory 选择不同的

java - 如何为自动生成的 SOAP Web 服务请求提供相同的接口(interface)?

c++ - 将现有的 C++ Web 服务转换为负载平衡服务器?

java - 如果 B 扩展 A,则无法将 List<A> 转换为 List<B> (有道理),但是为什么可以转换 List<?将 A> 扩展到列表 <B>?

java - JTextArea 的行号和调整 JTextArea 文本大小的问题

java - 最好在 Spring 测试类中使用 @Autowired 或 new?

java - 获取意外 token : Postman post request

spring - 如何在spring bean中注入(inject)完整的属性文件

java - 从另一个 Action 调用一个 Action 而不是返回任何简单的结果