首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Angular 2+ Http post请求responseType blob不显示服务器返回的json错误

Angular 2+是一个流行的前端开发框架,用于构建Web应用程序。在使用Angular进行开发时,经常需要向服务器发送HTTP请求并接收响应数据。Http post请求的responseType设置为blob时,服务器返回的数据以二进制形式接收。

在使用Angular进行Http post请求时,如果设置responseType为blob,并且服务器返回的数据为json格式,可能会遇到服务器返回的json错误无法显示的问题。这是因为responseType设置为blob时,接收到的数据是以二进制形式保存的,并不能直接显示为json格式。

为了解决这个问题,我们可以使用Angular提供的responseType为blob的方法进行二进制数据的转换和解析。

下面是一个完善且全面的答案,涵盖了解决该问题的方法、优势、应用场景以及推荐的腾讯云相关产品和产品介绍链接地址。

答案: 在Angular 2+中,当使用Http post请求的responseType设置为blob时,可以通过使用Blob的内置方法来解析服务器返回的二进制数据,并将其转换为可读取的json格式。

首先,确保在Angular应用中已经引入了HttpClientModule,并在需要发送Http post请求的组件中引入HttpClient。

接下来,创建一个Http post请求,并将responseType设置为blob。示例代码如下:

代码语言:txt
复制
import { Component } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Component({
  selector: 'app-example',
  template: `
    <button (click)="sendPostRequest()">Send POST Request</button>
  `
})
export class ExampleComponent {
  constructor(private http: HttpClient) {}

  sendPostRequest() {
    const url = 'https://example.com/api/endpoint';
    const data = { key: 'value' };

    this.http.post(url, data, { responseType: 'blob' }).subscribe(
      (response: Blob) => {
        this.handleResponse(response);
      },
      (error) => {
        console.error('Error:', error);
      }
    );
  }

  handleResponse(response: Blob) {
    const reader = new FileReader();
    reader.onload = () => {
      const jsonResponse = JSON.parse(reader.result as string);
      console.log('Response:', jsonResponse);
    };
    reader.readAsText(response);
  }
}

在上述示例代码中,sendPostRequest方法用于发送Http post请求,并设置responseType为blob。请求的URL和数据可以根据实际情况进行修改。

handleResponse方法用于处理接收到的二进制数据。首先创建一个FileReader对象,并设置其onload事件处理程序。在事件处理程序中,使用readAsText方法将二进制数据转换为可读取的文本,并通过JSON.parse方法将其解析为json格式。

通过以上方法,我们可以将服务器返回的二进制数据转换为可读取的json格式,并进行相应的处理和显示。

优势: 使用responseType为blob的Http post请求能够处理接收到的二进制数据,适用于需要上传或下载二进制文件的场景。例如,通过发送Http post请求将文件上传到服务器或从服务器下载文件等。

应用场景: responseType为blob的Http post请求适用于以下场景:

  1. 文件上传:通过将文件转换为二进制数据并发送到服务器。
  2. 文件下载:从服务器下载文件并将其保存为二进制数据。

推荐的腾讯云产品和产品介绍链接地址: 在腾讯云提供的云计算服务中,您可以使用云对象存储 COS(Cloud Object Storage)来存储和管理您的文件。COS提供了高可靠性、高可用性和低成本的对象存储服务,并支持HTTP post请求。您可以通过以下链接了解更多关于腾讯云对象存储 COS的信息: 腾讯云对象存储 COS产品介绍:https://cloud.tencent.com/product/cos

注意:由于要求答案中不能提及亚马逊AWS、Azure、阿里云、华为云、天翼云、GoDaddy、Namecheap、Google等流行的一些云计算品牌商,因此无法提供其他云计算厂商的产品信息。如有需要,建议您查阅各个厂商的官方文档或网站以获取相关产品信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Hybrid开发高级系列】AngularJS(二)——常用$服务

/43124679 1.4.1 简介         angular提供了http服务来同服务端进行通信,http服务队浏览器XMLHttpRequest对象进行了封装,让我们可以以ajax方式来从服务器请求数据..., JSONP, POST, PUT     url: 字符串,请求目标     params: 字符串或者对象,会被转换成为查询字符串追加url后面     data: 在发送post请求时使用,...cache: 布尔类型或者缓存对象,设置之后angular会缓存get请求。     timeout: 数值,延迟请求     responseType:字符串,响应类型。...可以为arraybuffer, blob, document, json, text, moz-blob, moz-chunked-text, moz-chunked-arraybuffer 1.4.3...$scope.names = response; }).error(function(data){     //错误代码 }); 1.4.8 $http post实例     $http  post实例

42040

前端文件下载汇总「案例讲解」

在模版文件 index.ejs 中,我们请求了文件接口 http://localhost:3000/download/file,并获取到了返回内容。...数据类型可以是 ArrayBuffer, Blob, Document, JS 对象,字符串等,这取决于 responseType 设置什么值 responseType 指定响应类型。...可以解答了: 在上面,我们设置了request.responseType = 'blob' 接口。...结合 angular 使用 axios 在 react 和 vue 框架开发时,用比较频繁。笔者使用 angular 框架来开发,其中集成了 @angular/common/http 模块。...,自动唤起浏览器下载 使用原生 XMLHttpRequest 处理请求,让我们知道文件下载前后发生了什么;使用 axios 和 @angular/common/http 能让我们更好管理和快速开发。

25210
  • dart系列之:浏览器中舞者,用dart发送HTTP请求

    HTTP资源请求,也就是AJAX请求。...发送GET请求 虽然现代web APP被各种框架所封装,但是归根结底他还是一个AJAX富客户端应用。我们通过各种异步HTTP请求服务器请求数据,然后展示在页面上。...请求 GET是从服务器拉取数据,相应POST就是通用服务器中提交数据方法。...所以直接使用他获取返回内容即可。 更加通用操作 上面我们讲解了get和formpost,从代码可以看到,他们底层实际上都调用是request方法。request是一个更加通用HTTP请求方法。...responseType表示是HttpRequest.responseType,是返回对象格式,默认情况下是String,也可以是’arraybuffer’, ‘blob’, ‘document’,

    83730

    Angular 从入坑到挖坑 - HTTP 请求概览

    HttpClient 默认返回信息格式都是 json 对象,在后端接口返回并不是 json 对象情况下,需要手动设置响应类型(text、blob、arraybuffer...) import {...而在组件处仅显示错误提示 在服务中定义一个错误处理器,用来处理与后端请求中发生错误 import { Injectable } from '@angular/core'; import { Observable...} else { // 服务端返回错误信息 console.error(`服务端错误HTTP 状态码:${error.status} \n\r 错误信息:${JSON.stringify...; } } 当请求发生错误时,通过在 HttpClient 方法返回 Observable 对象中使用 pipe 管道将错误传递给自定义错误处理器,从而完成捕获错误信息后续操作 ?...4.3、请求和响应拦截 在向服务器发起请求时,一般是需要我们在请求头中添加上授权 token 信息,与其当后端接口返回我们无权访问时再来处理,是不是可以在发起请求前去进行拦截判断,如果包含 token

    5.3K10

    XMLHttpRequest

    响应体开始接收但未完成 4 Loaded HTTP 响应已经完全接收 ☞ status   由服务器返回 HTTP 状态代码,如 200 表示成功,而 404 表示 “Not Found” 错误。...☞ response   该属性只读表示服务器返回数据体,可能是任意数据类型,比如字符串,对象,二进制对象等,具体类型由responseType 属性决定。...☞ responseType   表示服务器返回数据类型,这个属性是可写,在 open 之后,send 之前,告诉服务器返回指定类型数据。...如果 responseType 设为空字符串,就等同于默认值 text 表示服务器返回文本数据;arraybuffer 表示服务器返回二进制数组;blob 表示返回二进制对象;document 返回一个文档对象...要特别注意,当这个方法调用时候,实现通常不会打开一个到 Web 服务器网络连接。 参数说明  ① method 参数是用于请求 HTTP 方法。值包括 GET、POST

    1.4K40

    XMLHttpRequest使用指南大全

    xhr.timeout = 3000; //设置响应返回数据格式 xhr.responseType = "text"; //创建一个 post 请求,采用异步 xhr.open(...” String字符串 “document” Document对象 希望返回 XML 格式数据时使用 “json” javascript 对象 存在兼容性问题,IE10/IE11不支持 “blob”...在不限制超时情况下,有可能同步请求一直处于pending状态,服务端迟迟返回响应,这样整个页面就会一直阻塞,无法响应用户其他交互。...一旦程序抛出错误,如果 catch 就无法继续执行后面的代码,所以调用 xhr.send(data)方法时,应该用 try-catch捕捉错误。...这样判断是有坑儿,比如当返回http状态码不是200,而是201时,请求虽然也是成功,但并没有执行成功回调逻辑。所以更靠谱判断方法应该是:当http状态码为2xx或304时才认为成功。

    1.3K30

    axios实现跨域三种方法_vue跨域配置

    })); 请求配置 { // `url` 是用于请求服务器 URL url: '/user', // `method` 是创建请求时使用方法 method: 'get', // 默认是 get...` 允许在向服务器发送前,修改请求数据 // 只能用在 'PUT', 'POST' 和 'PATCH' 这几个请求方法 // 后面数组中函数必须返回一个字符串,或 ArrayBuffer,或 Stream...` 表示跨域请求时是否需要使用凭证 withCredentials: false, // 默认 // `adapter` 允许自定义处理请求,以使测试更轻松 // 返回一个 promise 并应用一个有效响应...: 'janedoe', password: 's00pers3cret' }, // `responseType` 表示服务器响应数据类型,可以是 'arraybuffer', 'blob', 'document...', 'json', 'text', 'stream' responseType: 'json', // 默认 // `xsrfCookieName` 是用作 xsrf token cookie

    3.6K20

    你真的会使用XMLHttpRequest吗?

    xhr.timeout = 3000; //设置响应返回数据格式 xhr.responseType = "text"; //创建一个 post 请求,采用异步 xhr.open('POST..." String字符串 "document" Document对象 希望返回 XML 格式数据时使用 "json" javascript 对象 存在兼容性问题,IE10/IE11不支持 "blob" Blob...在不限制超时情况下,有可能同步请求一直处于pending状态,服务端迟迟返回响应,这样整个页面就会一直阻塞,无法响应用户其他交互。...一旦程序抛出错误,如果 catch 就无法继续执行后面的代码,所以调用 xhr.send(data)方法时,应该用 try-catch捕捉错误。...这样判断是有坑儿,比如当返回http状态码不是200,而是201时,请求虽然也是成功,但并没有执行成功回调逻辑。所以更靠谱判断方法应该是:当http状态码为2xx或304时才认为成功。

    1.6K30

    jQuery深入——动画、常用工具、JSON、Ajax

    可通过 HTTP 状态码判定服务端是否成功响应数据 1) 响应正常 200 2) 请求错误 4XX 3) 服务器错误 5XX 4) 重定向 301 5) HTTP 缓存命中 304 Demo <body...Method 和 URL 第三个参数设置为 false 可实现同步数据请求 send 方法 调用 send 方法后才会发起请求 POST 数据需要通过 send 方法发送 除字符串之外还可以发送复杂类型数据...也为 0 upload 属性 返回一个 XMLHTTPRequestUpload 对象 可通过绑定事件侦听上传过程 responseType 属性 设置响应内容格式类型,默认字符串 可设置多种格式:...jsonblob、arraybuffer 等 设置后会影响 response 值 response 属性 响应正文内容 默认为字符串,但会被 responseType 影响 5、XHR2.0CORS...cookie 简单请求与复杂请求 复杂请求会先发送一次 OPTIONS 方法预检请求 简单请求需要同时满足条件: 请求 Method 必须为 HEAD、GET、POST 之一 请求头中字段超过

    1.5K10

    Axios基本使用

    : application/json;charset=UTF-8 * 请求正文为Request Payload,格式是json格式字符串 * 用@RequestParam是接收不到参数,只能用@...` 允许在向服务器发送前,修改请求数据 // 只能用在 'PUT', 'POST' 和 'PATCH' 这几个请求方法 // 后面数组中函数必须返回一个字符串,或 ArrayBuffer,或..., // 默认 // `adapter` 允许自定义处理请求,以使测试更轻松 // 返回一个 promise 并应用一个有效响应 adapter: function (config)...`responseType` 表示服务器响应数据类型,可以是 'arraybuffer', 'blob', 'document', 'json', 'text', 'stream' responseType...https.Agent({ keepAlive: true }), // 'proxy' 定义代理服务器主机名称和端口 // `auth` 表示 HTTP 基础验证应当用于连接代理,并提供凭据

    1.8K31

    一比一还原axios源码(二)—— 请求响应处理

    第二,post请求还没实现。而处理拿到response实际上就是处理响应体和响应头。实现post请求,实际上就是实现请求体和请求头。今天我们就来实现这四个点内容。   ...方法,来把post请求data参数对象,转换成JSON字符串,因为这里data是一个对象,send方法是不接受对象,所以我们要转换成字符串,也就是文档中USVString 类型。...二、响应头和响应体处理   上面第一小节,我们已经可以发起带body请求,并且服务器也能根据request header正确解析了,下面我们要做就是来处理返回数据。...那么在实际代码中呢,我们实现了发起ajax请求一条主线,也就是从请求发起,到响应返回过程,并且在过程中,由于json特殊性,对此还进行了相应头字段和body转换,再有一个实用buildURL...但是在服务器http请求中,get是可以传递body。   另外一个思考题:get和post请求有啥区别?

    85060
    领券