angularjs中的$ http.post对我不起作用,$ http.get有响应错误

时间:2016-07-04 22:27:55

标签: angularjs spring rest

我是angularjs的新手,我正在努力学习它但是我遇到了一些问题,实际上它们有两个问题:

第一个问题: $http.post从不起作用,因为没有任何操作且没有响应。但是,$http.get能够正常运作。

第二个问题:由于第一个问题,我通过$http.get调用我的restful webservice,但Web服务响应状态始终为-1。虽然Web服务能够成功完成其工作并始终响应数据为null,但任何人都可以帮助我。

这是我的角色部分:

var app = angular.module('myLogin',[]);
                  app.controller('loginController',function($scope,$http){ 
                  $scope.login=function(){ 
                    var username = $scope.username;
                    var password = $scope.pass;

                    $http.get("http://localhost:8080/spring/webservice/login/"+username+"/"+password)

                   .success(function(data,status){
                    alert("data : "+data);
                      alert("Data Inserted Successfully");
                    window.location.href = "chatScreen.html"; 

                  })
                  .error(function(data,status){
                      alert("Status: "+status);
                      window.location.href = "login.html";    

                  });

                      }
                 });

这是我的网络服务:

/**
     * web service part
     */
    @RequestMapping(value="webservice/login/{name}/{pass}", method=RequestMethod.GET)
    @ResponseStatus(value = HttpStatus.OK)
    public ResponseEntity<String> weblogin(@PathVariable("name") String name, @PathVariable("pass") String pass)
    {
        System.out.print("username : "+name);
        System.out.print(pass);
        UserService service = new UserService();
        List<UserBean> users = service.getUsers();
        if(users!=null)
        {
            for(UserBean user : users)
                if( ( user.getUsername().equals(name) ) && ( user.getPassword().equals(pass)  ) )
                {
                    System.out.print("success");

                    username = name;
                    //model.addAttribute("result", "Welcome to chat..");                    

                    MessageService messageService = new MessageService();
                    List<MessageBean> messages = messageService.getMessage(username);
                    String userMessages="";
                    if(messages != null)
                    {
                        for(MessageBean msg : messages) 
                            userMessages +="\n"+msg.getSender() + ": " + msg.getMessage()+" \n";
                    }
                    else
                        userMessages +="You have no Messages !";

                    //model.addAttribute("whoSendToMe", userMessages);

                    return new ResponseEntity(HttpStatus.OK);
                }
        }

        return new ResponseEntity<String>("faild", HttpStatus.NOT_FOUND);

    }

2 个答案:

答案 0 :(得分:2)

参考这可能会让您知道如何处理您的问题: -

<application android:allowBackup="true"        
         android:icon="@drawable/main_icon"
         android:label="@string/main_name"
         android:theme="@style/AppTheme" >

<activity android:name="com.foobar.MyActivity2"            
          android:taskAffinity="com.foobar.MyActivity2"
          android:icon="@drawable/icon1"
          android:label="@string/name1" >
    <intent-filter>
        <action   android:name="android.intent.action.MAIN"       />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>        

<activity android:name="com.foobar.MyActivity2"
          android:taskAffinity="com.foobar.MyActivity2"
          android:icon="@drawable/icon1"
          android:label="@string/name2" >
    <intent-filter>
        <action   android:name="android.intent.action.MAIN"       />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>             

分享您的代码,以便我们尝试解决它

答案 1 :(得分:0)

如果您使用方法GET并且收到-1,则通常表示您提供了错误的网址。

对于当时的POST方法,您应该使用以下语法:

return $http({
            method: 'POST',
            url: 'index.php/email/createDeliverable',
            data: $.param({
                csrfTokenName: --your token--,
                userName: user.name,
                password: password
            }),
            headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
        });

请记住添加标题部分。

您的服务器可能需要CSRF令牌验证,在这种情况下您需要传递它,请参阅我的示例:csrfTokenName: - 您的令牌 - ,