Angular 4.3 HttpClient (Angular访问 REST Web 服务) 二、Http 请求结果类型转换与错误处理
2017-12-13 18:30
627 查看
Http Get响应(Response)类型转换
接着上一节。1。在浏览器控制台中可以看到响应的JSON对象有许多属性(properties)。如果试着用data.login访问login属性会报错。
console.log(data.login);
因为Get返回的是Object类型。
Angular get原型
typescript get(url: string, options?: { headers?: HttpHeaders | { [header: string]: string | string[]; }; observe?: 'body'; params?: HttpParams | { [param: string]: string | string[]; }; reportProgress?: boolean; responseType?: 'json'; withCredentials?: boolean; }): Observable<Object>;
2。转换响应的object对象为自定义对象:
2.1 自定义类型UserResponse :
import { Component, OnInit } from '@angular/core'; import { HttpClient } from '@angular/common/http'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent implements OnInit { title = 'app'; results = ''; constructor(private http: HttpClient){ } ngOnInit(): void { this.http.get<UserResponse>('https://api.github.com/users/seeschweiler').subscribe(data => { //console.log(data); console.log("User Login: " + data.login); console.log("Bio: " + data.bio); console.log("Company: " + data.company); }); } } interface UserResponse { login: string; bio: string; company: string; }
错误处理
1。由于一些可预见或不可预见的状况,会导致 HTTP失败。因此应该总是有处理这些错误状况的代码存在。 Get的subscribe方法有两个参数 未回调函数,用于处理Get成功与失败的情况。subscribe方法原型
subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;
失败处理
this.http.get<UserResponse>('https://api.github.com/users/seeschweiler').subscribe( data => { console.log("User Login: " + data.login); console.log("Bio: " + data.bio); console.log("Company: " + data.company); },//新增失败处理 err => { console.log("Error occured.") } );
2。失败详细信息:错误处理回调函数参数类型是any,可将其转换为HttpErrorResponse类型,并可获取更多错误属性信息。 HttpErrorResponse 需要从@angular/common/http导入才能使用。
完整app.component.ts
import { Component, OnInit } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import {HttpErrorResponse} from '@angular/common/http'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent implements OnInit { title = 'app'; results = ''; constructor(private http: HttpClient){ } ngOnInit(): void { this.http.get<UserResponse>('https://api.github.com/users/seeschweiler').subscribe(data => { console.log(data); console.log("User Login: " + data.login); console.log("Bio: " + data.bio); console.log("Company: " + data.company); }, (err: HttpErrorResponse) => { if (err.error instanceof Error) { console.log("Client-side error occured."); } else { console.log("Server-side error occured."); } } ); } } interface UserResponse { login: string; bio: string; company: string; }
相关文章推荐
- Angular 4.3 HttpClient (Angular访问 REST Web 服务) 一、Http 请求示例(Get)
- Angular 4.3 HttpClient (Angular访问 REST Web 服务) 二、Http POST
- Angular 4.3 HttpClient (Angular访问 REST Web 服务) 三、拦截器 Interceptors
- 尝试向 URI“ ”发出请求时出错。这可能是由于试图以跨域方式访问服务而又没有正确的跨域策略,或策略不适用于 SOAP 服务...。出现此错误也可能是由于使用的是 Web 服务代理中的内部类型而没有使用 InternalsVisibleToAttribute 属性。
- 遭遇“HTTP 错误 500.19 无法访问请求的页面,因为该页的相关配置数据无效。”处理
- 无法将类型“ASP.login_aspx”转换为“System.Web.UI.WebControls.Login” 错误处理
- tomcat启动时报Error listenerStart错误,访问web服务时报HTTP Status 404错误
- 使用Java创建rest 服务 通过HTTP请求访问资源
- C# httpwebrequest访问HTTPS错误处理方法
- IIS虚拟目录内的视频文件访问出错:HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
- 关于web程序调试相关工具谷歌访问助手,和测试 POST 请求客户端工具,Advanced REST Client的下载和安装
- C# httpwebrequest访问HTTPS错误处理
- httpclient 4.3中、https请求错误的解决办法
- 使用HttpWebRequest进行请求时发生错误:基础连接已关闭,发送时发生错误处理
- 为 Android 开发访问 JAX-RS Web 服务的 Apache HttpClient 客户端 学习创建 Apache HttpClient Android 客户端
- 与 WinHTTP Web Proxy Auto-Discovery Service 服务相依的 DHCP Client 服务因下列错误而无法启动
- Tomcat启动时报Error listenerStart错误,访问web服务时报HTTP Status 404错误
- 使用HttpWebRequest进行请求时发生错误:基础连接已关闭,发送时发生错误处理
- 无法将类型“ASP.login_aspx”转换为“System.Web.UI.WebControls.Login” 错误处理
- (微信API接口开发) 使用HttpWebRequest进行请求时发生错误:基础连接已关闭,发送时发生错误处理