简体   繁体   中英

Get form data in HTTP call using angular

This is how the authentication is supposed to be.

POST https://DomainName/api/v1/authentication?username= {username}&password={password}.. this is the typescript authentication call code

authenticate(url, payload){
let username: string = 'admin';
let password: string = 'password';
let headers: Headers = new Headers();
  headers.append("Authorization", "Basic " + btoa(username + ":" + password)); 
  headers.append("Content-Type", "application/json");
  headers.append("Access-Control-Allow-Origin", "*");
return this.http.post(server + url + addon, payload, { headers:headers });

this is the code for the form data

    // Getting data info from signing form
loginForm = new FormGroup({
username: new FormControl(null, ([Validators.required, Validators.minLength(5)])),
password: new FormControl(null, ([Validators.required, Validators.minLength(5)])),
})

the user data

// user data 
loginData={
username:'',
    password:'',
}

buildLoginData(){
    this.loginData.password = this.loginForm.controls['password'].value;
this.loginData.username = this.loginForm.controls['username'].value;
}

the sign in function

    signin(){
    this.loading =this.loadingCtrl.create({
  content:"Verifying Credentials ..."
});
this.loading.present();
    this.buildLoginData();
    console.log(this.loginData);
  this.http.store('authentication', this.loginData).subscribe((response)=>{
            // console.log(response);
            // console.log("*******************************************");
            // console.log(response['username']);
            localStorage.setItem('office_ID',response['officeId']);
            localStorage.setItem('user_ID', response['userId']);
            localStorage.setItem('username', response['username']);
            this.loading.dismissAll();
            this.navCtrl.push(HomePage);
  },error=>{
            this.loading.dismissAll();
                if(error.status === 401){
                    this.toastr.messenger('Wrong Username or Password');
                }else
    this.toastr.messenger('Login Failed!');
            console.log(JSON.stringify(error));
            alert("Error : " + error );
});    
}

Response log data

{"_body":"{\"developerMessage\":\"Invalid authentication details were 
passed in api request.\",\"httpStatusCode\":\"401\",\"defaultUserMessage 
\":\"Unauthenticated. Please login.\",\"userMessageGlobalisationCode
\":\"error.msg.not.authenticated\",\"errors
\":[]}","status":401,"ok":false,"statusText":"Unauthorized","headers":
{"Content-Type":["application/json"]},"type":2,"url":"https//x.x.x.x:xxxx            
/xxxxxxxxx/api/v1/authentication?tenantIdentifier=default"} 

the error

 "Unauthorized" and this is because the form values are not being sent to                                                                                     
  the api as headers.

Any help is much Appreciated. Thanks.

Does your this.http.store(url,data)
add the url Parameters behind the scene?
authentication?username={username}&password={password}..

if not the quick way is to do it yourself
const url =`authenticationusername=${this.loginData.username}&password=${this.loginData.password}`

then your can do
this.http.store(url,this.loginData)

Or you can look at URL Parameters https://angular.io/guide/http#url-parameters

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM