2013-02-24 2 views
2

Я в настоящее время борется с ошибкой, которая появляется в моем Chrome инструменты разработчика консолиAngularJS: игнорируя параметр Content-Type

GET http://localhost:8080/movie_db/search/movie?movieTitle=Machete 415 (Unsupported Media Type) 

, когда я пытаюсь подключиться к REST службы с угловой JS. Поскольку у меня была эта проблема до того, как я попытался получить доступ к службе REST через плагин Simple REST в Chrome, я предполагаю, что наиболее вероятным недостатком параметра заголовка Content-Type является причина этого (должен быть Content-Type: 'application/json «).

Угловой сайт JS говорит, что можно задать параметры заголовка следующим образом: $httpProvider.defaults.headers.get['My-Header']='value'. К сожалению, это не оказало никакого влияния, и проблема все еще существует.

Таким образом, я хотел бы знать, как я могу манипулировать параметрами заголовка с помощью углового JS, которые отправляются на мою службу REST.

Право на данный момент, мой код выглядит следующим образом:

function SearchMovieController($scope, $resource) { 

    $scope.SearchMovie = $resource('http://localhost\\:8080/movie_db/search/:action', 
      {action: 'movie', movieTitle: 'Machete'}, 
      {get: {method: 'JSONP', headers: [{'Content-Type': 'application/json'}, {'Accept' : 'application/json'}]}}); 

     $scope.SearchMovie.get() 
    } 

стороне сервера выглядит следующим образом (я использую Spring MVC):

CONTROLLER:

@Controller 
@RequestMapping("/search/movie") 
public class SearchController { // TODO rename? 

private final TheMovieDBService theMovieDBService; 

@Autowired 
public SearchController(TheMovieDBService theMovieDBService) { 
    this.theMovieDBService = theMovieDBService; 
} 


@ResponseBody 
@RequestMapping(method = RequestMethod.GET, produces = "application/json", consumes = "application/json") 
public Map<String, Object> search(@RequestParam String movieTitle) { 
    Map<String, Object> response = new HashMap<String, Object>(); 

    try { 
     TheMovieDBSearchResult searchResult = theMovieDBService.searchMovie(movieTitle); 
     response.put("result", searchResult); 
     response.put("success", "true"); 
    } catch (EncoderException e) { 
     response.put("success", "false"); 
    } 
    return response; 
} 
} 

web.xml

<servlet> 
    <servlet-name>json</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 

    <init-param> 
     <param-name>contextClass</param-name> 
     <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value> 
    </init-param> 

    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>com.u6f6o.apps.movie_db.config.web.ServletConfig</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>json</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 
+1

Поскольку вы используете JSONP я не думаю, что тип содержимого имеет значение, если сервер не делает что-то странное. JSONP добавляет тег '

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