我需要發送使用Robospice爲Android,將有以下列格式的數據的POST HTTP請求:Robospice:發送HTTP請求體內JSON數據
內容類型:應用/ JSON
{「VAR1」:「var1val」,「telNumber」:「var2val」}
可能有內部的其他HTTP頭但是這是由服務器所需的唯一標頭 - 我已經與測試它簡單的HelloWorld請求在體內不需要任何特定的物體。
問題是我無法以正確格式發送請求正文。我正在根據Robospice tutorial做所有事情。
loadDataFromNetwork() method
public T loadDataFromNetwork() throws Exception { // I'm making generic requests, T is a class representing given request
Uri.Builder uriBuilder = Uri.parse(mUrl).buildUpon(); // mURL is just a full URL, including the method (just HTTP, not HTTPS)
MultiValueMap<String, String> body = new LinkedMultiValueMap<String, String>();
for (NameValuePair nvp : mPostParams) { // From the constructor: mPostParams = new ArrayList<NameValuePair>();
body.add(nvp.getName(), nvp.getValue());
}
HttpEntity<?> requestEntity = new HttpEntity<Object>(body, mHttpHeaders);
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<T> responseEntity = getRestTemplate().exchange(
uriBuilder.build().toString(), HttpMethod.POST, requestEntity,
mClazz);
return responseEntity.getBody();
}
在JsonSpiceService
類(擴展SpringAndroidSpiceService)
public RestTemplate createRestTemplate() {
RestTemplate restTemplate = new RestTemplate(true);
MappingJacksonHttpMessageConverter jsonConverter = new MappingJacksonHttpMessageConverter();
FormHttpMessageConverter formHttpMessageConverter = new
FormHttpMessageConverter();
StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter();
final List<HttpMessageConverter<?>> listHttpMessageConverters = restTemplate
.getMessageConverters();
setTimeout(restTemplate);
listHttpMessageConverters.add(jsonConverter);
listHttpMessageConverters.add(formHttpMessageConverter);
listHttpMessageConverters.add(stringHttpMessageConverter);
restTemplate.setMessageConverters(listHttpMessageConverters);
return restTemplate;
}
createRestTemplate()
這樣做,這樣,我不斷收到500 Internal Server Error
,我敢肯定這是有關以格式化身體。有沒有得到一個原料 HTTP請求(不是toString()
版本的一些方法只是一個原始請求)的方法嗎?我還有什麼可以做錯的 - 是否可以關於身體的編碼?
請注意,我用兩個Chrome應用中發送REST請求和curl
測試同樣的請求(工作得很好)。