2014-11-21 3 views
-2
I am new to AngularJS, I am from SAP background and as part of my PoC I built my REST services using SAP NW Gateway,I am facing an issue to POST data from Angularjs to my REST services.Please find the below detailed error log 

    ***1.  Remote Address: 
    10.xxx.xx.xx:8000 
    2.  Request URL: 
    //host:port/sap/opu/odata/sap/USERS/Users 
    3. Request Method: 
    POST 
    4.  Status Code: 
    400 Bad Request 
    5.  Request Headersview source 
    1.  Accept: 
    application/json, text/plain, */* 
    2.  Accept-Encoding: 
    gzip,deflate 
    3.  Accept-Language: 
    en,te;q=0.8 
    4.  Authorization: 
    Basic a2VsYW1yOmoyZDEwMA== 
    5.  Connection: 
    keep-alive 
    6.  Content-Length: 
    146 
    7.  Content-Type: 
    application/json;charset=UTF-8 
    8.  Cookie: 
    sap-usercontext=sap-client=100; SAP_SESSIONID_J2D_100=R_60WyUyNG2nV1MbhC9QAcKPzyBwwxHkmwsAUFaDBqQ%3d 
    9.  Host: 
    abcdefgh:8000 
    10. Origin: 
    file:// 
    11. User-Agent: 
    Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36 
    12. X-CSRF-Token: 
    _jXDnt2Cdpplpj5zvK3iPA== 
    6.  Request Payloadview source 
    {UserID:555, FirstName:rajesh555, LastName:kelam555, Email:[email protected], Phone:9876554433,…} 
    1. Country: "UK" 
    2. Email: "[email protected]" 
    3. FirstName: "rajesh555" 
    4. LastName: "kelam555" 
    5. Phone: 9876554433 
    6. Postcode: "TW18 4BL" 
    7. UserID: 555 
    7.  Response Headersview source 
    1.  content-length: 
    535 
    2.  content-type: 
    application/json 
    3.  dataserviceversion: 
    1.0**** 


Angular Code for Post : 
$scope.addRow = function() { 

          var config = {};       

          var pushdata = {'UserID':$scope.UserID, 'FirstName':$scope.FirstName, 'LastName':$scope.LastName, 'Email':$scope.Email, 'Phone':$scope.Phone, 'Country':$scope.Country, 'Postcode':$scope.Postcode}; 

          // Sending Notification to User 
          growl.addSuccessMessage("User Created", config); 
/*       $http.post(url,pushdata, {'Content-Type':'application/json'}).success(function(pushdata) { 
            $scope.resultSet = pushdata.d.results; 
            alret("Data Posted"); 

          }) */     

          $http.post(url,pushdata, {headers:{'Content-Type':'application/json'}}).success(function(data){alert(data);}); 
          $scope.resultSet.push(pushdata); 
          $scope.createMessage(); 
          $scope.UserID=''; 
          $scope.FirstName=''; 
          $scope.LastName=''; 
          $scope.Email=''; 
          $scope.Phone=''; 
          $scope.Country=''; 

        }; 

it would be great if some one help me to sort. 

*Note: I am a kid in AngularJS...please ignore me and feel free to thought me. 

I request to suggest the best URl/Site to learn Angularjs in a better and consistent way. 


I thought, if I share the format(XML/JSON) of payload expecting for the POST to perform by my SAP Gateway service which will helps me to quickly resolve this.Below are the formats of XML/JSON works for POST. 

XML Формат:
хост: порт/сок/ОП/OData/заболонный/USERS/Users ('123') Пользователей ('123') 2014-11-21T15: 21: 52Z RAJESH Kelam [email protected] Великобритания RG4 6SA

JSON Формат:
{ д: { __metadata: { id: "host: port/sap/opu/odata/sap/USERS/Users ('123')" uri: "host: port/sap/opu/odata/sap/USERS/Users ('123')" типа: "USERS.User" } - Идентификатор_пользователя: "123" FirstName: "RAJESH" LastName: "Kelam" Электронная почта: "[email protected]" Телефон: "123456789" Страна: "Великобритания" Почтовый индекс: "RG4 6SA" } - }

+0

Вам не нужно добавлять заголовок типа контента, угловой сортирует его для вас. В методе post не так уж много ошибок, возможно, это ваши услуги, на которые вы хотите посмотреть. – BenCr

+0

Привет, Бен, я пробовал то же самое, что вы посоветовали ранее на этот пост, но не повезло. И я могу подтвердить, что моя служба работает абсолютно нормально со всеми CRUDQ-операциями как с клиентом SAP Gateway, так и с клиентом Chrome REST. Но я сомневаюсь в том, формат, который он пытается опубликовать, не соответствует .... Я видел, что ошибка является ошибкой форматирования XML. –

+0

По умолчанию Angularjs отправит его JSON, а не XML. Ожидает ли ваше обслуживание XML? Я не знаю, как сделать угловой отправку XML или даже если это возможно. – BenCr

ответ

0

Наконец-то я смог разобраться с моей проблемой, это все о форматировании данных, передаваемых службе REST ..

ниже является peice кода, который работает мой случай

$ scope.addRow = функция() {

     var StrUId = ($scope.UserID).toString(); 
         var StrPh = ($scope.Phone).toString(); 
         var pushdata = {"UserID":StrUId, "FirstName":$scope.FirstName, "LastName":$scope.LastName, "Email":$scope.Email, "Phone":StrPh, "Country":$scope.Country, "Postcode":$scope.Postcode}; 

         // Posting data 
         $http({ 
           method: "post", 
           url:url, 
           data:pushdata, 
           headers: { 
           "X-CSRF-Token": "0XGo8HzpzrhaZxxX83QH9g==", 
             }, 
           dataType : "json", 
           async: false, 
         contentType: 'application/json', 
         success: function(data){ 
           alert(data); 
         } 
         }); 

Спасибо за поддержку, оказанную Раджеш

0

вы уверены, что вы URL размещения ожидает эти данные вы хотите опубликовать? Вы можете использовать расширение POSTMAN (в google chrome) и протестировать, если вы готовы к получению любых данных из http.post

+0

Привет, это то, что в моем сознании. .. как я могу проверить, какой формат и данные он ожидает .... Я протестировал успешную отправку данных с использованием клиента шлюза SAp и клиента Chrome Adv REST ... он также принимает формат XML/JSON –

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