繁体   English   中英

“string”参数必须是 string、Buffer 或 ArrayBuffer 类型之一。 收货型 object

[英]he "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type object

我一直在尝试通过 2captcha API 发送此请求,但问题是每次我通过代码发送它时都会给我错误:[ERR_INVALID_ARG_TYPE]:“字符串”参数必须是字符串、缓冲区或数组缓冲区类型之一。 收货型 object

任何帮助都会非常有用,我一直在尝试不同的事情,但似乎无法发送此请求。

 var FormData = require('form-data'); var fs = require('fs'); var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest; const data = new FormData(); data.append("key", "96000001977a12e50ca4eb45f104fe1"); data.append("file", "file"); data.append("submit", "00000W0UAAAAAA-ouoKHOnWuQDNymSwDFYeGP300"); const xhr = new XMLHttpRequest(); xhr.withCredentials = true; xhr.addEventListener("readystatechange", function () { if (this.readyState === this.DONE) { console.log(this.responseText); } }); xhr.open("POST", "http://2captcha.com/in.php?key=962800000a12e50ca4eb45f104fe1&method=userrecaptcha&googlekey=000000UAAAAAA-ouoKHOnWuQDNymSwDFYeG00000&pageurl=https://www.google.com/recaptcha/api2/demo"); xhr.send(data); //problem area

看起来您正在使用的特定 XMLHttpRequest 库不支持 FormData object。 请参阅此错误报告 总的来说,看起来这个库已经有一段时间没有更新了。 如果不是太难(我不知道这个旧库在您的项目中的根深蒂固),但我建议切换到更现代的解决方案,例如 node-fetch,它使用更新、更易于使用的fetch API 节点获取package 将为节点提供该支持。

解决当前问题的一种解决方案是使用URLSearchParams ,它可以让您以所需的相同格式编码数据,与 FormData 共享类似的 API,但也有一个 toString function。 你的错误信息说这个库支持字符串,所以你可以传入一个字符串化的值。

 const data = new URLSearchParams(); data.append("key", "xxx"); data.append("file", "file"); data.append("submit", "yyy"); console.log(data.toString())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM