获取错误400客户端发送的请求在语法上是不正确的():使用RestTemplate,Spring

时间:2013-08-13 08:02:15

标签: java spring http rest

我在REST,Spring MVC中有一个客户端 - 服务器架构。客户端正在访问服务器URL并发送两个参数。服务器应该使用响应值回复客户端。一个客户端我使用RestTemplate访问服务器URL。运行时,服务器URL成功访问(服务器端逻辑正在执行),但后来我在客户端收到以下错误:

HTTP Status 400 - 

--------------------------------------------------------------------------------

type Status report

message 

description The request sent by the client was syntactically incorrect ().

客户端代码是:

rresult = restTemplate.getForObject("http://localhost:8081/Merchant/api/movieTheater"+params.toString(), ResponseText.class);

esrver端代码是:

@ResponseBody
@RequestMapping(value="movieTheater")
public ResponseText getCustomerInput(@RequestParam("name") String name, @RequestParam("price") Double price) {
    System.out.println("Requst URL got accessed here");
    ResponseText result = new ResponseText();
    Transaction transaction = new Transaction();
    transaction.setMovieName(name);
    transaction.setTicketPrice(price);
    transaction.setDatetime(new Date());
    if(transactionService.addTransaction(transaction))
        result.setMessage(ResponseStatus.SUCCESS.getStatus());
    else
        result.setMessage(ResponseStatus.FAILED.getStatus());
    return result;
}                

当我单独访问URL时,它工作正常。我不确定我做错了什么。请帮忙!提前谢谢!

2 个答案:

答案 0 :(得分:2)

我想通了!我有一个内部类用于在客户端创建JSON结构。解决方案是使该类静态!因为它不是静态的,所以它试图实例化,因此得到错误消息:“无法读取JSON:没有为类型找到合适的构造函数”

答案 1 :(得分:0)

我猜网址"http://localhost:8081/Merchant/api/movieTheater"+params.toString()不正确。什么是params的类名,以及mothod toString()返回的结果是什么。当访问不正确的URL时,getCustomerInput()方法无法获取参数值。

网址必须与此类似

http://localhost:8081/Merchant/api/movieTheater?name=xxx&price=1.01