2016-09-23 59 views
0

我想使用RestTemplate將自定義對象和自定義頁眉作爲POST請求發送到URL。以下是我正在使用的代碼;如何使用Spring的RestTemplate發送自定義對象和頁眉

MultiValueMap<String, String> headers = new LinkedMultiValueMap<String, String>(); 
    headers.add("Authorization: key=", SERVER_KEY); 
    headers.add("Content-Type", "application/json"); 

    RestTemplate restTemplate = new RestTemplate(); 
    restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); 

    CustomDataModel customDataModel = new CustomDataModel(); 
    customDataModel.setTitle(message); 
    customDataModel.setBody(rowId); 

    CustomNotificationModel customNotificationModel = new CustomNotificationModel(); 
    customNotificationModel.setRegistration_ids(list); 
    customNotificationModel.setPriority("high"); 
    customNotificationModel.setData(customDataModel); 

    HttpEntity<CustomNotificationModel> entity = new HttpEntity<CustomNotificationModel>(customNotificationModel, headers); 

    restTemplate.postForLocation(REST_SERVICE_URI, entity); 

但它給了我以下錯誤;

org.springframework.web.client.HttpServerErrorException: 500 Internal Server Error 
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:94) 
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:641) 
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:597) 
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:557) 
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:475) 
at com.humworld.sync.restclient.RestClient.notifyUser(RestClient.java:68) 
at com.humworld.sync.controller.SyncRestController.saveUserDetails(SyncRestController.java:94) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:497) 
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) 
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) 
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) 
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:832) 
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:743) 
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) 
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:961) 
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:895) 
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967) 
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1852) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 

請指教我需要做些什麼改變。

+0

請提供有關控制器和mvc配置的更多信息。提前致謝! –

回答

0

對不起,我在授權標題中犯了一個錯誤,它必須是這樣的;

headers.add("Authorization", "key=" + SERVER_KEY); 

該代碼工作正常,再次抱歉。

相關問題