Java 为什么Springframework在标头看起来正确时返回空正文?

Java 为什么Springframework在标头看起来正确时返回空正文?,java,android,spring,Java,Android,Spring,当我运行这段代码时,我会在httpResponse中得到响应。它正在报告标头中的正确字节数。但是身体是空的。当我调用.getBody()时,它是空的 标题: <200 OK,{Date=[Thu, 29 Nov 2012 16:26:06 GMT], Server=[Apache], Vary=[Accept-Encoding], Content-Length=[5072], Keep-Alive=[timeout=10, max=100], Connection=[Keep-Alive]

当我运行这段代码时,我会在httpResponse中得到响应。它正在报告标头中的正确字节数。但是身体是空的。当我调用.getBody()时,它是空的

标题:

<200 OK,{Date=[Thu, 29 Nov 2012 16:26:06 GMT], Server=[Apache], Vary=[Accept-Encoding], Content-Length=[5072], Keep-Alive=[timeout=10, max=100], Connection=[Keep-Alive], Content-Type=[text/html]}>

我做错了什么

    String url = new String("http://www.myurl.com/scripts/json/v1/slipmanager.php");

    MultiValueMap<String, Object> formData = new LinkedMultiValueMap<String, Object>();
    formData.add("username", userName);
    formData.add("password", md5(userPassword));
    formData.add("method", "getslips");

    RestTemplate template = new RestTemplate(true);
    template.setRequestFactory(new HttpComponentsClientHttpRequestFactory());
    HttpHeaders requestHeaders = new HttpHeaders();

    requestHeaders.setContentType(new MediaType("multipart", "form-data"));
    template.getMessageConverters().add(new StringHttpMessageConverter());

    HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<MultiValueMap<String, Object>>(formData, requestHeaders);
    ResponseEntity<?> httpResponse = null;
    try
    {
        httpResponse = template.exchange(url, HttpMethod.POST, request, null);
        String tmp = (String) httpResponse.getBody();
                    //THIS IS WHERE THE BODY IS NULL
    }
    catch (Exception e) 
    {
        Log.e("POST", e.getMessage(), e);
    }
String url=新字符串(“http://www.myurl.com/scripts/json/v1/slipmanager.php");
MultiValueMap formData=新链接的MultiValueMap();
添加(“用户名”,用户名);
添加(“密码”,md5(用户密码));
formData.add(“方法”、“获取单”);
RestTemplate=新的RestTemplate(true);
setRequestFactory(新的HttpComponentsClientHttpRequestFactory());
HttpHeaders requestHeaders=新的HttpHeaders();
setContentType(新的MediaType(“多部分”、“表单数据”));
template.getMessageConverters().add(新的StringHttpMessageConverter());
HttpEntity请求=新的HttpEntity(formData,RequestHeader);
ResponseEntity httpResponse=null;
尝试
{
httpResponse=template.exchange(url,HttpMethod.POST,request,null);
字符串tmp=(字符串)httpResponse.getBody();
//这就是主体为空的地方
}
捕获(例外e)
{
Log.e(“POST”,e.getMessage(),e);
}

您请求的响应类型为“null”,因此Spring认为您希望丢弃主体。如果希望它是字符串,String.class应该可以工作。据我所知,您甚至不需要显式的StringHttpMessageConverter。

服务器是否要求您以多部分的形式提交这样的简单表单?使用MediaType.APPLICATION\u FORM\u URLENCODED会更简单。