Как разместить контент как application / x-www-form-urlencoded - PullRequest
2 голосов
/ 07 марта 2019

angularjs $ http.post отказывается использовать мой Content-Type

Я работаю с подрядчиком - их команда разрабатывает серверные API, в то время как я собираю приложение javascript, используя angularjs. Они настаивают на том, чтобы API разрешал только вызовы с application/x-www-form-urlencoded вызовами, поэтому я пытаюсь выяснить, как использовать $ http для выполнения вызовов с кодировкой urlenco, и столкнуться с проблемами. Все страницы инструкций, которые я нахожу, кажутся сосредоточенными на старых версиях angularjs.

Я пытаюсь использовать следующий код:

$scope.makeApiCall = function(  ){
    var apiData = {
                    "key1" : "value1",
                    "key2" : "value2"
                };
    var apiConfig = {
                    "headers" : {
                        "Content-Type" : "application/x-www-form-urlencoded;charset=utf-8;"
                    }
                };
    return $http.post('/Plugins/apiCall', apiData, apiConfig)
    .then(function(response){
        $scope.data=response.data;
    });
};

Но когда я выполняю вызов, вместо того, чтобы использовать предоставленный мною Content-Type, инструменты разработчика сообщают, что он использует Content-Type: text/html; charset=utf-8

Как мне получить $http.post для отправки нужного типа контента?

1 Ответ

3 голосов
/ 07 марта 2019

Как разместить контент как application/x-www-form-urlencoded

Используйте сервис $httpParamSerializerJQLike для преобразования данных:

.controller(function($http, $httpParamSerializerJQLike) {
  //...

  $http({
    url: myUrl,
    method: 'POST',
    data: $httpParamSerializerJQLike(myData),
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    }
  });

});

Для получения дополнительной информации см.

...