Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Whatspp业务api的http post请求中,上传文件为二进制数据的正确方式是什么?

在Whatspp业务api的http post请求中,上传文件为二进制数据的正确方式是什么?
EN

Stack Overflow用户
提问于 2019-09-02 10:43:01
回答 2查看 3.4K关注 0票数 0

我正在尝试创建一个功能,通过whatsapp发送发票给我们的客户作为pdf。为此,我已经有了一个发票pdf,它需要上传到whatsapp服务器上,以便按照文档发送给我们的客户:https://developers.facebook.com/docs/whatsapp/api/media/

因为它需要一个二进制媒体数据,所以我创建了一个http post请求主体,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    let requestOptions = {
      method: method,
      url: "https://whatsapp-url" + '/v1/upload',
      body: Buffer.from(fs.readFileSync("path/test.pdf")),
      json: true,
      headers: {
        authorization: bearerToken,
        'content-type' : 'application/pdf'
      }
    };

作为对此的响应,我确实在响应正文中收到了来自Whatsapp的media-id,我使用它按照文档https://developers.facebook.com/docs/whatsapp/api/messages向客户发送消息

但是,唉!收到的pdf文件是损坏的,无法打开,而且我还注意到,我发送的pdf文件比我在客户端通过Whatsapp消息收到的pdf文件要小得多。

有没有人可以帮助我在创建上传的请求体时可能做错了什么,因为我怀疑这就是我的问题所在。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-20 14:36:26

有两种方式可以通过链接或通过ID将文件发送给用户。链接可以是您自己的WhatsApp服务器链接,也可以是将提供商名称作为参数的外部链接。

如果您随身携带该文件,则可以将该文件上传到您的WhatsApp业务应用编程接口服务器,并获取媒体ID作为回报。使用该媒体id创建链接或简单地使用该媒体ID将文件发送给用户。

以下是创建二进制文件的代码示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 const dataStream = fs.readFileSync(
    `Your Path to file/File Name`,
    null
  );

  let uploadFile = yield whatsAppMessage.uploadWhatsappMediaToUser(
    bot, // We are using Bot kit to process message
    'application/pdf', // mime type
    dataStream, // Binary Data Stream to upload the file
    file name //File name
  );

    function uploadWhatsappMediaToUser(bot, contentType, binaryData, filename) {
  const options = {
    method: 'POST',
    uri: `Upload URL`,
    headers: {
      Authorization: `Bearer  {auth_token}`,
      'Content-Type': contentType,
      'Content-Disposition': `attachment; filename=${filename}`,
    },
    rejectUnauthorized: false,
    body: binaryData,
  };

  return rp(options);
}

在uploadFile变量中,您将收到需要解析以提取媒体ID的json对象。使用该媒体ID发送文件。

以下是在邮件中将文件作为附件发送的代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const fileDetails = {
    mime_type: 'application/pdf', // MIME type
    id: uploadFile.media[0].id, // Media ID
    filename: fileName,
  };
  yield whatsAppMessage.sendWhatsappMediaMessageToUser(
    bot, // Bot kit object
    userId, //User mobile number
    fileDetails // Above File object
  );

这样,您就可以将文件发送给用户。

票数 0
EN

Stack Overflow用户

发布于 2019-09-02 14:14:57

正如文档上所说的,你不能做这样的事情。

您需要做的是(通过api)为该文件创建一个唯一的url,并将其保存在您的端。然后将该url发送给whatsApp。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57755554

复制
相关文章
Node中POST请求的正确处理方式
Node的 http 模块只对HTTP报文的头部进行了解析,然后触发 request 事件。如果请求中还带有内容部分(如 POST 请求,它具有报头和内容),内容部分需要用户自行接收和解析。
Qiang
2019/06/20
2K0
Node中POST请求的正确处理方式
java后台发起上传文件的post请求(http和https)
对于文件上传,客户端通常就是页面,在页面里实现上传文件不是什么难事,写个form,加上enctype = “multipart/form-data”,在写个接收的就可以了,没什么难的。如:
全栈程序员站长
2022/07/22
5.8K0
java后台发起上传文件的post请求(http和https)
AJAX的post请求与上传文件
之前介绍了AJAX的get的请求方式与跨域请求,除此之外AJAX还可以进行异步的post请求,在使用post方式的请求时需要设置请求头,如下:
端碗吹水
2020/09/23
3.2K0
AJAX的post请求与上传文件
HTTP协议中GET、POST和HEAD的介绍(请求方式总结)
GET: 请求指定的页面信息,并返回实体主体。 HEAD: 只请求页面的首部。 POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。 PUT: 从客户端向服务器传送的数据取代指定的文档的内容。 DELETE: 请求服务器删除指定的页面。 OPTIONS: 允许客户端查看服务器的性能。 TRACE: 请求服务器在响应中的实体主体部分返回所得到的内容。 PATCH: 实体中包含一个表,表中说明与该URI所表示的原内容的区别。 MOVE: 请求服务器将指定的页面移至另一个网络地址。 COPY
全栈程序员站长
2021/05/19
3.5K0
HTTP_POST请求的数据格式
通过上面的例子,我们可以看到在Request Headers里面以后很多字段,比如Content-type,Host这些,那么这些字段又有什么意思呢,下面通过表格来介绍一下:
全栈程序员站长
2022/07/21
1.2K0
HTTP中的API是什么?
随着互联网的不断发展,应用程序间的交互变得越来越普遍。为了实现应用程序之间的数据传递和功能集成,API(应用程序接口)成为了一种重要的技术。而在Web开发中,HTTP(超文本传输协议)成为了最常用的通信协议之一。本文将介绍HTTP中的API,探讨API和HTTP的结合以及API的常见用途。
海拥
2023/06/27
1.3K0
HTTP中的API是什么?
http请求中get和post方法的区别
一般我们在浏览器输入一个网址访问网站都是GET请求;再FORM表单中,可以通过设置Method指定提交方式为GET或者POST提交方式,默认为GET提交方式。
用户7880705
2020/11/06
4.4K0
HTTP协议中的GET、POST请求方法的区别
HTTP 请求方法有:HEAD、PUT、DELETE、OPTIONS、CONNECT
宣言言言
2019/12/15
4.7K0
Jmeter之Http请求上传文件/上传图片
之前文章用Python实现过文件上传/图片上传Python模拟实现multipart/form-data格式上传图片文件,今天我们来用Jmeter来实现下
王大力测试进阶之路
2019/12/12
8.7K0
Android入门之Http请求方式Get与Post
前言:在Android开发的过程中,必须会接触到数据交互(访问数据,写入数据等你等),既然接触到数据的交互,那么自然而然就是使用通讯间的协议来进行请求,最常见的协议就是Http协议,Http协议包括两个具体的请求方式-Get以及Post。
AlicFeng
2019/02/22
6.8K0
http请求get与post的区别
他们最直接的区别就是get请求将数据放在url中传输,而post请求是将数据放在request body中传输
许喜朝
2021/03/02
1.2K0
java发送http的get、post请求
转载自 http://www.cnblogs.com/zhuawang/archive/2012/12/08/2809380.html
qubianzhong
2019/07/01
3.2K0
Http:GET和POST请求的区别
GET和POST请求的区别 GET请求 GET /books/?sex=man&name=Professional HTTP/1.1 Host: www.wrox.com User-Ag
心跳包
2020/08/31
1.5K0
Flask 使用 request 处理GET POST请求、上传文件
在Django框架开发中,request对象就是用来处理GET\POST请求的关键对象,而Flask框架也是一样的。
Devops海洋的渔夫
2019/11/14
12K0
Http接口Post方式传送File文件示例
对接的接口是MutipartFile的上传接口,后台用Http方式去调用,所以可以使用HttpClient或者用Spring框架封装的RestTemplate去后台http请求
SmileNicky
2022/05/07
2.9K0
Http接口Post方式传送File文件示例
Qt中实现http服务接收POST请求
总体而言,HTTP服务器适用于传统的客户端-服务器通信,每次请求都需要重新建立连接,适合请求响应式的场景。WebSocket服务器适用于需要实时双向通信的场景,适合聊天应用、实时数据更新等。
Linux兵工厂
2023/09/15
1.5K0
Qt中实现http服务接收POST请求
curl 模拟 GET\POST 请求,以及 curl post 上传文件
一般情况下,我们调试数据接口,都会使用一个 postman 的工具,但是这个工具还是有点大了。事实上,我们在调试一些小功能的时候,完全没有必要使用它。在命令行中,我们使用 curl 这个工具,完全可以满足我们轻量的调试要求。
FungLeo
2019/05/27
12.8K0
SpringMVC源码分析:POST请求中的文件处理
本章我们来一起阅读和分析SpringMVC的部分源码,看看收到POST请求中的二进制文件后,SpingMVC框架是如何处理的;
程序员欣宸
2020/02/13
1.5K0
springboot上传文件的为空的处理方式
增加配置 @Configuration public class UploadConfig { //显示声明CommonsMultipartResolver为mutipartResolver @Bean(name = "multipartResolver") public MultipartResolver multipartResolver() { CommonsMultipartResolver resolver = new CommonsMultipartRes
Dream城堡
2019/06/11
2K0
点击加载更多

相似问题

android发送http post请求-正确方式

38

使用HTTP Post请求上传文件

40

Http POST请求提供身体数据和文件上传

21

http请求中post表单的正确语法是什么

21

发送json POST请求的正确方式是什么?

16
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文