Skip to content

Instantly share code, notes, and snippets.

@dherges
Last active March 12, 2023 14:50
Show Gist options
  • Star 16 You must be signed in to star a gist
  • Fork 6 You must be signed in to fork a gist
  • Save dherges/442d3a7bc65e3e46d8dead728e4d8be8 to your computer and use it in GitHub Desktop.
Save dherges/442d3a7bc65e3e46d8dead728e4d8be8 to your computer and use it in GitHub Desktop.
Angular HttpClient (5)
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders, HttpParams, HttpResponse } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
/** This class implements some features that should be tested. */
@Injectable()
export class HttpClientFeatureService {
constructor(
private http: HttpClient
) {}
login(user: string, password: string): Observable<boolean> {
const body = new HttpParams()
.set(`user`, user)
.set(`password`, password);
const headers = new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded' });
return this.http.post(`auth/login`, body.toString(), { headers, observe: 'response' })
.map((res: HttpResponse<Object>) => res.ok)
.catch((err: any) => Observable.of(false));
}
}
@kamok
Copy link

kamok commented Jan 10, 2018

This is probably the only way I was able to successfully do a application/x-www-form-urlencoded request with Angular 5. I spent 1 hour looking for a solution.

@muthu0101
Copy link

Great Job, it's really helped me a lot.

@fsmaiorano
Copy link

Great Job! I was with the same problem!

@marija126
Copy link

This worked for me too! Thank you!

@cristhoz
Copy link

Thank you!

@JhonBv
Copy link

JhonBv commented Jul 4, 2018

Really well done mate...!

@yeisson
Copy link

yeisson commented Jul 4, 2018

Works with Angular 6 too, thanks

@JhonBv
Copy link

JhonBv commented Jul 5, 2018

There is an easier way though!

let body = new URLSearchParams();
body.set('username', this.username);
body.set('password', this.password);
body.set('grant_type', gtype);
body.set('client_id', clid);
body.set('client_secret', secid);
URLSearchParams() will automatically encode all of the body content in application/x-www-form-urlencoded

@dherges
Copy link
Author

dherges commented Oct 24, 2018

HttpParams implements encoding: https://github.com/angular/angular/blob/7.0.0/packages/common/http/src/params.ts#L179-L185

URLSearchParams and HttpParams looks like the same.

@Nexeuz
Copy link

Nexeuz commented Oct 24, 2018

Thanks!

@vaibhavTecorb
Copy link

Helped a lot. Thanks.

@chandrashekhar-developer

thanks you saved my time..

@nikensss
Copy link

This helped a lot. Thank you very much!

@Vasiakozak1
Copy link

Thanks!

@Rancha124
Copy link

Rancha124 commented Jan 21, 2021

This is not working in Angular 4, anyone have an idea regarding that?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment