2015-12-15 2 views
1

Мне нужно выполнить один запрос с Content-Type, отличный от application/json. Изменение параметров по умолчанию $http не является вариантом, поскольку с данными JSON все еще выполняется много запросов.Угловое: задание Content-Type для запроса

Я нашел пример

var req = { 
      method: 'POST', 
      url: 'example.com', 
      headers: { 
       'Content-Type': "application/x-www-form-urlencoded" 
      }, 
      data: "somedata" 
      } 

$http(req).then(function (resp) { console.log(resp);}); 

Но не хотят работать - Content-Type еще application/json.

Есть ли верный способ сделать это правильно? Изменение $http значений по умолчанию, а затем восстановление не является решением.

ответ

1

Что вы делаете, это недействительный способ установки заголовков в angularjs.

Чтобы добавить или перезаписать эти значения по умолчанию, просто добавьте или удалите свойство из этих объектов конфигурации. Чтобы добавить заголовки для HTTP-метода , кроме POST или PUT, просто добавьте новый объект с именем HTTP в качестве ключа, например. $ httpProvider.defaults.headers.get = {'My-Header': 'value'}.

Реф. https://docs.angularjs.org/api/ng/service/ $ http - «Настройка заголовков HTTP»

Редактировать.

Что вы делаете правильно, но вам не хватает одной вещи.

В вашем сценарии это не работает, потому что при использовании application/x-www-form-urlencoded вам необходимо закодировать свои данные, используя $httpParamSerializerJQLike(). Также не забудьте указать $httpParamSerializerJQLike как зависимость.

+0

Но мне нужно установить его только для одного вызова, а не для всех. –

+1

Извините, вы были замешаны при написании этого ответа. См. Править. –

+0

Спасибо, что работает. –