2015-09-29 1 views
4

Это наш отдых шаблон конфигурации

@Bean 
    public RestTemplate infoBloxRestTemplate() { 
     RestTemplate restTemplate=new RestTemplate(); 
     ArrayList<ClientHttpRequestInterceptor> interceptors = new ArrayList<>(); 
     interceptors.add(httpBasicAuthenticationInterceptor()); 
     restTemplate.setInterceptors(interceptors); 
     restTemplate.getMessageConverters().add(jacksonConverter()); 
     restTemplate.setRequestFactory(genericHttpRequestFactory()); 
     return restTemplate; 
    } 

Мы пытаемся сделать вызов POST, который успешно работает с Почтальон и возвращает соответствующий ответ.

final HttpHeaders headers = new HttpHeaders(); 
headers.add("Accept", "application/json"); 
headers.add("Content-Type", "application/json"); 

HttpEntity<Object> httpEntity = new HttpEntity<Object>(record, headers); 

StringBuilder uri = new StringBuilder(infobloxRestClient.createUrl("/record:host")); 
infobloxRestClient.getRestTemplate().exchange(uri.toString(), HttpMethod.POST, httpEntity, String.class); 

Но этот вызов POST завершился с ошибкой ниже. Вот моя трассировка:

com.sun.xml.ws.server.sei.TieHandler createResponse 
SEVERE: null 
java.lang.UnsupportedOperationException 
    at java.util.Collections$UnmodifiableCollection.add(Unknown Source) 
    at org.springframework.http.HttpHeaders.add(HttpHeaders.java:558) 
    at com.test.externalinterfaces.HTTPBasicAuthenticationInterceptor.intercept(HTTPBasicAuthenticationInterceptor.java:30) 
    at org.springframework.http.client.InterceptingClientHttpRequest$RequestExecution.execute(InterceptingClientHttpRequest.java:81) 
    at org.springframework.http.client.InterceptingClientHttpRequest.executeInternal(InterceptingClientHttpRequest.java:67) 
    at org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:46) 
    at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:49) 
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:488) 
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:452) 

Любая помощь в этом отношении будет очень полезной.

+0

Не удалось изменить конфигурационную цепочку, поскольку после этого заголовок не может быть изменен. Взгляните на http://stackoverflow.com/questions/14383240/basic-authentication-with-resttemplate-3-1. – Hannes

ответ

0

Чтобы получить больше людей знают эту проблему:

@Sameer, я нашел эту проблему является вы используете HttpHeaders, вы можете попробовать создать свой заголовок с этим кодом
MultiValueMap<String, String> headers =new LinkedMultiValueMap<String, String>(); И не использовать HttpHeaders и затем в вашем HttpEntity для создания объекта объекта как
new HttpEntity<Object>(record, headers); Тогда он должен решить проблему.