春天400坏请求。我该如何解决它或者至少看看是什么原因造成的?

时间:2014-06-29 21:55:12

标签: ajax spring rest spring-mvc http-status-code-400

我真的很难过。我做了很多研究,没有任何效果。请帮忙。我有一个Spring REST调用和一个jquery ajax PUT和POST方法,它们都给出了400个错误的请求。我已经完成了JSON.stringify,原始对象数据,一切。我似乎无法找到什么是错的,我唯一的线索是一个400错误的请求错误没有堆栈跟踪,没有关于它应该如何被格式化......没有。有没有办法可以获得更多有关错误的信息?它甚至没有到达下面的Spring REST方法的第一行。

Spring REST代码:

@RequestMapping(value = "/supervisor/agent", method=RequestMethod.PUT)
public void updateAgent(@RequestBody AgentDTO agent)
{
    try {
        AgentDTO sessionAgent = (AgentDTO) session.getAttribute(ADAuthenticationSuccessHandler.SESSION_AGENT);
        RestTemplate restTemplate = new RestTemplate();
        log.debug("Supervisor updating agent:"+agent);
        String allURL = acrURL+"/company/"+sessionAgent.getCompanyGuid()+"/supervisor/"+sessionAgent.getAgentGuid()+"/agent/"+agent.getAgentGuid();
        log.debug("Supervisor updating agent url:"+allURL);
        agent.setEnabled(Mytime.ENABLED);
        restTemplate.put(allURL, agent);
        log.debug("Supervisor Agent updated");
    } catch (Exception e) {
        log.error("Error supervisor updating agent");
        e.printStackTrace();
    }
}

这是JQuery ajax调用:

function editAgent()
{
    console.log("edit agent");
    console.log("chosenAgent:"+chosenAgent);
    var anAgent = myAgents[chosenAgent];
    anAgent.firstName = $('#SDEAFirstName').val();
    anAgent.lastName = $('#SDEALastName').val();
    anAgent.addressEmail = $('#SDEAEmail').val();
    console.log(anAgent);
    console.log(anAgent.agentGuid);
//  var testData = '{"addressEmail": "agent7@csi.com","agentGuid": "EC165F8A-28F4-4765-BDC5-893722FCF6AA","firstName": "Agent","lastName": "0071","workStatus": "Offline}';
    $.ajax({
        type : 'PUT',
        url : "/mytime.agentdesktop/supervisor/agent",
        contentType : "application/json; charset=utf-8",
        data: JSON.stringify(anAgent),
        dataType : 'json',
        success : function(result)
        {
            console.log("Agent edited:",anAgent.agentGuid);
            init = false; // needed to reload agent data. Otherwise, it just grabs it but doesn't update gui
            getMyAgents(); // reload agent data now that this agent was deleted
        },
        error : function(jqXHR, textStatus, errorThrown)
        {
            console.error("editAgent:status:"+textStatus+" error:", errorThrown);
        }
    });
    editAgentDialog.dialog('close');
}

1 个答案:

答案 0 :(得分:2)

@RequestMapping(value = "/supervisor/agent", method=RequestMethod.PUT, consumes = "application/json")

您需要说明您将在控制器中接收哪种类型的数据。

consumes = "application/json"这样做。