前台html代码如下
   $.ajax({  
            type: "POST",   //提交的方法
            //url:"/login", //提交的地址
            url:'/UserOp/login',
            //url:'commUserOpjson/jsonChkLogin',
            data:$('#form_login').serialize(),// 序列化表单值 
            dataType:"json",
            async: false, 
            error: function(request) {  //失败的话
                 sMsg.innerHTML=request.responseText;  
            },  ribbon controller 代码如下
@RequestMapping(value="/**",method=RequestMethod.POST)
public String route_post(HttpServletRequest request,@RequestBody String body)
{
String param=request.getQueryString();
if(StringUtils.isBlank(param))
param="";
else 
param="?"+param;
String url="http:/"+request.getRequestURI()+param;
return restTemplate.postForObject(url,new HttpEntity<String>(body), String.class);
}
@RequestMapping(value = "/**",method=RequestMethod.GET)
public String route_get(HttpServletRequest request) throws IOException {
    try {
     String url="http:/"+request.getRequestURI()+"?"+request.getQueryString();
     return restTemplate.getForObject(url, String.class);
    } catch (final HttpClientErrorException e) {
     throw e;
        //return new ResponseEntity<>(e.getResponseBodyAsByteArray(), e.getResponseHeaders(), e.getStatusCode());
    }
}spring boot 微服务代码
@RequestMapping(value="/login",method=RequestMethod.GET)
@ApiOperation(value="username,auth_group,tid", notes="根据u=account&p=password来获取用户详细信息")
public String login(HttpServletRequest request,@RequestParam String uname,@RequestParam String upass)
{
Cloud_Users user= cloud_UsersRepository.findByUsernameAndPassword(uname,upass);
if(user==null)
return MyJ_ReqResult.getJsonMsg(MyJ_ReqResult.DB_NOTFIND, "账户或密码错误.", null);

return MyJ_ReqResult.getJsonMsg(MyJ_ReqResult.OK, "", user);
}
@RequestMapping(value = "/login", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
@ApiOperation(value="session:username,auth_group,tid", notes="根据u=account&p=password来获取用户详细信息")
public String login_post(@RequestParam String uname,@RequestParam String upass)
{
Cloud_Users user= cloud_UsersRepository.findByUsernameAndPassword(uname,upass);
if(user==null)
return MyJ_ReqResult.getJsonMsg(MyJ_ReqResult.DB_NOTFIND, "账户或密码错误", null);
return MyJ_ReqResult.getJsonMsg(MyJ_ReqResult.OK, "", user);
} 我单独测试过微服务,所有测试都能测试通过,但是使用ribbon转发post却总是出现错误,怀疑是下面这段代码有问题,
@RequestMapping(value="/**",method=RequestMethod.POST)
public String route_post(HttpServletRequest request,@RequestBody String body)
{
String param=request.getQueryString();
if(StringUtils.isBlank(param))
param="";
else 
param="?"+param;
String url="http:/"+request.getRequestURI()+param;
return restTemplate.postForObject(url,new HttpEntity<String>(body), String.class);
}
我将ajax的type 改成 "GET",代码可以通过,说明URL似乎是没有问题,但是改成post总是提示如下错误{"timestamp":"2019-04-24T03:44:52.515+0000","status":500,"error":"Internal Server Error","message":"400 null","trace":"org.springframework.web.client.HttpClientErrorException$BadRequest: 400 null\r\n\tat org.springframework.web.client.HttpClientErrorException.create(HttpClientErrorException.java:79)\r\n\tat org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:122)\r\n\tat org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:102)\r\n\tat org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63)\r\n\tat 
.....
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\r\n\tat java.lang.Thread.run(Unknown Source)\r\n","path":"/UserOp/login"}