2017-05-14 4 views
1

JSONデータをformURLでエンコードされたデータとして変換しようとしていますが、まだ動作していません。JSONをFormURLに変換するtransformRequestを使用してエンコードされたデータ

マイHTTPポスト

$http.post(API_ENDPOINT.login, credentials, { 
    transformRequest: transformRequestAsFormPost 
}) 

要求

'use strict'; 

define(['app-module'], function(app) { 

$app.info('transformRequest initialized'); 

return app.factory('transformRequestAsFormPost', function() { 

    function transformRequest(data, getHeaders) { 
     var headers = getHeaders(); 
     headers["Content-Type"] = "application/x-www-form-urlencoded; charset=utf-8"; 
     return (serializeData(data)); 
    } 

    function serializeData(data) { 

     if (!angular.isObject(data)) { 
      return ((data === null) ? "" : data.toString()); 
     } 

     var buffer = []; 

     for (var name in data) { 
      if (!data.hasOwnProperty(name)) { 
       continue; 
      } 

      var value = data[name]; 

      buffer.push(
       encodeURIComponent(name) + 
       "=" + 
       encodeURIComponent((value == null) ? "" : value) 
      ); 

      console.log(buffer) 

     } 
     var source = buffer.join("&").replace(/%40/g, "@"); 
     return (source); 
    } 
    return (transformRequest); 
}); 
}); 

私は私が間違っているのかを把握することができませんを変換するマイ。 JSONオブジェクトを渡すと、文字列が返されます。

答えて

3

5da1256のため、transformRequest関数はリクエストヘッダーを変更できなくなりました。この動作は意図せず、文書化されていないため、変更はごくわずかなアプリケーションに影響するはずです。 1

Content-Type: application/x-www-form-urlencodedでPOSTリクエストを送信するには:

var config = { 
    transformRequest: $httpParamSerializer, 
    headers: { 
    'Content-Type': 'application/x-www-form-urlencoded' 
    } 
}; 

$http.post(API_ENDPOINT.login, credentials, config) 
    .then(function(response) { 
    console.log("SUCCESS"); 
}).catch(function(response) { 
    console.log("ERROR"); 
    throw response; 
}); 
+0

感謝は、彼らはそれを文書化しておく必要があります。私は何時間も探しました。 –

関連する問題