Настройка типа содержимого Json для клиента Rest
Я использую AsyncHttpClient для Android от loopj, чтобы я мог взаимодействовать с созданным мной спокойным веб-приложением. Я проверил POST-запрос с помощью Postman, и он отлично работает.
Тем не менее, в Android я пытаюсь сделать запрос на публикацию, однако, так как тип контента всегда установлен как text / html.
RequestParams params = new RequestParams();
params.setUseJsonStreamer(true);
params.put("email", "android@tester.com");
StringEntity se = null;
try {
se = new StringEntity(params.toString());
se.setContentType("application/json");
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Header headers[] = {};
if(getActivity() != null){
RestClient.postWithContentType(getActivity(), "contacts", se, "application/json", new AsyncHttpResponseHandler() {
//onSuccess and onFailure methods ommitted
});
Это продолжает давать сбой, и я получаю это сообщение в logcat: Passed contentType будет игнорироваться, потому что HttpEntity устанавливает тип содержимого.
Итак, я попытался изменить это,
public static void postWithContentType(Context context,String url,StringEntity s,String contentType, AsyncHttpResponseHandler responseHandler){
s.setContentType("application/json");
client.post(context, getAbsoluteUrl(url), s, contentType, responseHandler);
}
Однако я все еще получаю то же самое сообщение, это действительно расстраивает, и я пытался понять это целую вечность! Если у кого-то есть идеи о том, как установить тип контента - это будет высоко оценено, спасибо!
2 ответа
У меня была такая же проблема.
Я не могу понять, что влияет на это, потому что это действительно работает несколько дней назад. Я просто вручную добавляю заголовок, и он работает.
Просто добавь RestClient.addHeader("Content-Type", "application/json");
выше вашего RestClient.postWithContentType(...)
код.
RequestParams requestParams = new RequestParams();
asyncHttpClient.addHeader("Accept", "text/json");
asyncHttpClient.addHeader("content-type", "application/json");
asyncHttpClient.post(context, getAbsoluteUrl(url), requestParams, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, String content) {
super.onSuccess(content
// Ur logic
}
@Override
public void onFailure(Throwable error, String content) {
super.onFailure(error, content);
// Ur logic
}
});