2013-09-25 4 views
0

Я общаюсь с JSON API с помощью Robospice. Это, как я установить заголовки для запроса POST:Spring - изменение HTTP-заголовка Content-type

mHttpHeaders = new HttpHeaders(); 
mHttpHeaders.add("Content-Type", "application/json"); 
Log.d(Global.TAG, mHttpHeaders.toString()); 

Проблема заключается в том, что я получаю заголовок, который выглядит следующим образом: {Content-Type=[application/json]} где мне нужно отправить Content-Type:application/json (который, кажется, только заголовок, что мой сервер принимает). Я не могу найти способ изменить его (пробовал как с методами add(), так и с setContentType()), как это сделать?

ответ

1

Вам следует попробовать следить, и это работает для меня. Я использую шаблон Spring rest внутри Robospice.

MediaType mediaType = new MediaType("application", "json"); 
List<MediaType> acceptableMediaTypes = new ArrayList<MediaType>(); 
acceptableMediaTypes.add(mediaType); 

HttpHeaders headers = new HttpHeaders(); 
headers.setAccept(acceptableMediaTypes); 
+0

Он дает мне '{Accept = [application/json]}' заголовки. –

+0

Каков ответ с вашего сервера? –

+0

Это 500 Internal Server Error, но я попробовал этот запрос с 'curl', чтобы проверить, является ли его заголовок заголовком, и это, по-видимому, является причиной (например, форматирование заголовков), почему сервер не принимает запрос. –

0

Выход

{Content-Type=[application/json]} 

вы видите в Log заявление является лишь String возвращаемый методом toString(), это не фактический заголовок послал. Например

public static void main(String[] args) throws Exception { 
    HttpHeaders headers = new HttpHeaders(); 
    headers.add("Content-Type", "application/json"); 
    System.out.println(headers); 
} 

печатает

{Content-Type=[application/json]} 

Если вы используете HttpClient и HttpRequestBase (HttpGet, HttpPost и т.д.) правильно, то заголовок будет отправлен только штрафом.

Смежные вопросы