Robospice for Android を使用して、次の形式のデータを持つPOST HTTP リクエストを送信する必要があります。
コンテンツ タイプ: アプリケーション/json
{'var1':'var1val','telNumber':'var2val'}
内部には他の HTTP ヘッダーが含まれている可能性がありますが、これはサーバーが必要とする唯一のヘッダーです。ボディに特定のオブジェクトを必要としない単純な HelloWorld リクエストでテストしました。
問題は、リクエスト本文を正しい形式で送信できないことです。Robospice チュートリアルに従ってすべてを行っています。
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();
}
createRestTemplate()
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;
}
このようにして、私は取得500 Internal Server Error
し続け、それが体のフォーマットに関連していると確信しています. 生のHTTP リクエストを取得する方法はありますか(toString()
生のリクエストだけのメソッドのバージョンではありません)。他に何が間違っている可能性がありますか?それはボディのエンコーディングに関するものですか?
RESTリクエストを送信するためのChromeアプリと(正常に機能した)両方でまったく同じリクエストをテストしていたことに注意してくださいcurl
。