Skip to content

Instantly share code, notes, and snippets.

@dherges
Last active March 12, 2023 14:50
Show Gist options
  • Select an option

  • Save dherges/442d3a7bc65e3e46d8dead728e4d8be8 to your computer and use it in GitHub Desktop.

Select an option

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

kamok commented Jan 10, 2018

Copy link
Copy Markdown

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
Copy Markdown

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

@fsmaiorano

Copy link
Copy Markdown

Great Job! I was with the same problem!

@marija126

Copy link
Copy Markdown

This worked for me too! Thank you!

@cristhoz

Copy link
Copy Markdown

Thank you!

@JhonBv

JhonBv commented Jul 4, 2018

Copy link
Copy Markdown

Really well done mate...!

@yeisson

yeisson commented Jul 4, 2018

Copy link
Copy Markdown

Works with Angular 6 too, thanks

@JhonBv

JhonBv commented Jul 5, 2018

Copy link
Copy Markdown

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

dherges commented Oct 24, 2018

Copy link
Copy Markdown
Author

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

Nexeuz commented Oct 24, 2018

Copy link
Copy Markdown

Thanks!

@vaibhavTecorb

Copy link
Copy Markdown

Helped a lot. Thanks.

@chandrashekhar-developer

Copy link
Copy Markdown

thanks you saved my time..

@nikensss

Copy link
Copy Markdown

This helped a lot. Thank you very much!

@Vasiakozak1

Copy link
Copy Markdown

Thanks!

@Rancha124

Rancha124 commented Jan 21, 2021

Copy link
Copy Markdown

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