Java Spring中的Restful服务导致400个错误请求

Java Spring中的Restful服务导致400个错误请求,java,spring,resttemplate,Java,Spring,Resttemplate,我在使用Spring REST模板时遇到一些问题 根据我试图访问的Rest服务的API文档(仅适用于PHP)。贴子的正确格式为: curl -d "data={\"client_email\":\"steve@martiancraft.com\",\"client_name\":\"Steve Ryner\",\"employee_id\":0,\"service_id\":20216,\"start_date\":\"2012-08-15 09:00:00\",\"note\":\"This

我在使用Spring REST模板时遇到一些问题

根据我试图访问的Rest服务的API文档(仅适用于PHP)。贴子的正确格式为:

curl -d "data={\"client_email\":\"steve@martiancraft.com\",\"client_name\":\"Steve Ryner\",\"employee_id\":0,\"service_id\":20216,\"start_date\":\"2012-08-15 09:00:00\",\"note\":\"This is a test.\"}" http://www.setster.com/api/v2/company/7089/appointment?session_token=niab4ptf9mjjem41cooso389f3
要得到这样的回应:

{
"statusCode":0,
"statusDescription":"OK",
"data":{
    "status":2,
    "client_id":103352,
    "client_email":"steve@martiancraft.com",
    "client_name":"Steve Ryner",
    "company_id":"7089",
    "employee_id":9862,
    "location_id":"13832",
    "start_date":"2012-08-15 14:00",
    "end_date":"2012-08-15 15:00",
    "length":3600000,
    "note":"This is a test.",
    "service_id":20216,
    "type":"60 Min Swedish",
    "duration_padding":0,
    "repeat_type":0,
    "subservices":"",
    "timezone_dif":-18000,
    "price":"60",
    "custom_fields":"[]",
    "client_phone":"",
    "client_address":"",
    "payment_pending":0,
    "id":171302483
}
}

以下是我的代码的重要部分:

RestTemplate restTemplate = new RestTemplate();

Map<String, String> data = new HashMap<String, String>();

        data.put("client_name", "Alexandre Moraes");
        data.put("client_email", "kalvinmoraes@gmail.com");
        data.put("client_phone", "98065867");
        data.put("employee_id", "0");
        data.put("location_id", "16675"); // Here i have to specify the "Location_ID" because there is more than just one
        data.put("start_date", "2013-05-03 09:15:00");
        data.put("service_id", "18499");

        String result = restTemplate.postForObject("http://setster.com/api/v2/company/6788/appointment/?session_token="+session_token, data, String.class);

        resp.setContentType("text/html;charset=UTF-8");
        PrintWriter out = resp.getWriter();
        out.println(result);
也许我发送数据的格式是错误的。但我不知道如何管理这些信息


有人知道我做错了什么吗?

使用Jackson lib-将对象转换为json的简单方法:

ObjectMapper mapper=new ObjectMapper()


使用Jackson库-将对象转换为json的简单方法:

ObjectMapper mapper=new ObjectMapper()


在curl请求中,HTTP POST的主体是:

data={\"client_email\":\"steve@martiancraft.com\",\"client_name\":\"Steve Ryner\",\"employee_id\":0,\"service_id\":20216,\"start_date\":\"2012-08-15 09:00:00\",\"note\":\"This is a test.\"}
因此,您的端点需要一个标准HTTP POST,其中包含一个名为data的字符串,以及序列化的JSON。RestTemplate假定您希望以这种方式提交:

{\"client_email\":\"steve@martiancraft.com\",\"client_name\":\"Steve Ryner\",\"employee_id\":0,\"service_id\":20216,\"start_date\":\"2012-08-15 09:00:00\",\"note\":\"This is a test.\"}

i、 e,只是一个JSON对象。您将无法为此使用RestTemplate。使用其中一个用于HTTP服务。

在curl请求中,HTTP帖子的正文是:

data={\"client_email\":\"steve@martiancraft.com\",\"client_name\":\"Steve Ryner\",\"employee_id\":0,\"service_id\":20216,\"start_date\":\"2012-08-15 09:00:00\",\"note\":\"This is a test.\"}
因此,您的端点需要一个标准HTTP POST,其中包含一个名为data的字符串,以及序列化的JSON。RestTemplate假定您希望以这种方式提交:

{\"client_email\":\"steve@martiancraft.com\",\"client_name\":\"Steve Ryner\",\"employee_id\":0,\"service_id\":20216,\"start_date\":\"2012-08-15 09:00:00\",\"note\":\"This is a test.\"}

i、 例如,只是一个JSON对象。您将无法为此使用RestTemplate。使用其中一个用于HTTP服务。

调用
restTemplate.postForObject
不起作用,不是响应。调用
restTemplate.postForObject
不起作用,不是响应。感谢@jordan002提供的有用信息,实际上这是我第一次看到Java,有些事情很难理解:1。“Spring内置Http服务”是什么意思?很抱歉我的英语也不太好,你能给我举个例子吗?谢谢。添加了Spring远程处理手册的链接。希望这会有所帮助。如果您对回复感到满意,请接受或投票。感谢@jordan002提供的有用信息,实际上这是我第一次看到Java,有些东西很难理解:1。“Spring内置Http服务”是什么意思?很抱歉我的英语也不太好,你能给我举个例子吗?谢谢。添加了Spring远程处理手册的链接。希望这会有所帮助。如果您对回复感到满意,请接受或追加投票。