angularjs tutorial $ Http के साथ कोणीय, सामग्री प्रकार नहीं भेजा जा रहा है




node js (5)

महान! ऊपर दिए गए समाधान ने मेरे लिए काम किया। GET कॉल के साथ भी यही समस्या थी।

 method: 'GET',
 data: '',
 headers: {
        "Content-Type": "application/json"
 }

कोणीय सही सामग्री प्रकार विकल्प नहीं जोड़ रहा है, मैंने निम्नलिखित कमांड की कोशिश की:

$http({
    url: "http://localhost:8080/example/teste",
    dataType: "json",
    method: "POST",
    headers: {
        "Content-Type": "application/json"
    }
}).success(function(response){
    $scope.response = response;
}).error(function(error){
    $scope.error = error;
});

उपरोक्त कोड निम्नलिखित http अनुरोध उत्पन्न करता है:

POST http://localhost:8080/example/teste HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 0
Cache-Control: no-cache
Pragma: no-cache
Origin: http://localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31
Content-Type: application/xml
Accept: application/json, text/plain, */*
X-Requested-With: XMLHttpRequest
Referer: http://localhost:8080/example/index
Accept-Encoding: gzip,deflate,sdch
Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: JSESSIONID=C404CE2DA653136971DD1A3C3EB3725B

जैसा कि आप देख सकते हैं, "एप्लिकेशन / json" के बजाय, सामग्री प्रकार "एप्लिकेशन / xml" है। क्या मुझसे कोई चूक हो रही है ?


बस प्रत्येक POST अनुरोध में "सामग्री-प्रकार" हेडर को गतिशील रूप से जोड़ने का एक उदाहरण दिखाने के लिए। हो सकता है कि मैं POST परम को क्वेरी स्ट्रिंग के रूप में पास कर रहा हूं, जो कि ट्रांसफॉर्मर का उपयोग करके किया जाता है। इस स्थिति में इसका मान अनुप्रयोग / x-www-form-urlencoded है

// set Content-Type for POST requests
angular.module('myApp').run(basicAuth);
function basicAuth($http) {
    $http.defaults.headers.post = {'Content-Type': 'application/x-www-form-urlencoded'};
}

फिर कॉन्फ़िगर ऑब्जेक्ट को वापस करने से पहले अनुरोध विधि में इंटरसेप्टर से

// if header['Content-type'] is a POST then add data
'request': function (config) {
  if (
    angular.isDefined(config.headers['Content-Type']) 
    && !angular.isDefined(config.data)
  ) {
    config.data = '';
  }
  return config;
}

$http({
    url: 'http://localhost:8080/example/teste',
    dataType: 'json',
    method: 'POST',
    data: '',
    headers: {
        "Content-Type": "application/json"
    }

}).success(function(response){
    $scope.response = response;
}).error(function(error){
    $scope.error = error;
});

ऐसे में कोशिश करें।


आपको अनुरोध के साथ एक निकाय शामिल करने की आवश्यकता है। कोणीय सामग्री-प्रकार हेडर को अन्यथा हटा देता है।

$http तर्क के लिए data: '' जोड़ें data: ''


         $http({
                method: 'GET',
                url:'/http://localhost:8080/example/test' + toto,
                data: '',
                headers: {
                    'Content-Type': 'application/json'
                }
            }).then(
                function(response) {
                    return response.data;
                }, 
                function(errResponse) {
                    console.error('Error !!');
                    return $q.reject(errResponse);
                }