使用Suitescript使用表单数据实现与CURL POST相同的功能

使用Suitescript使用表单数据实现与CURL POST相同的功能,curl,netsuite,multipart,suitescript,Curl,Netsuite,Multipart,Suitescript,正在寻找Suitescript/Javascript专家为我指明正确的方向。我正在创建一个连接到第三方API的计划脚本,API调用要求使用多部分表单数据通过HTTP.POST提交GZIP文件。我已经通过CURL进行了测试,所以我知道我的数据是有效的。下面是卷曲测试: curl --location --request POST 'https://dev.themarket.co.nz/api/product/sku/sheet/upload' \ --header 'Content-Type:

正在寻找Suitescript/Javascript专家为我指明正确的方向。我正在创建一个连接到第三方API的计划脚本,API调用要求使用多部分表单数据通过HTTP.POST提交GZIP文件。我已经通过CURL进行了测试,所以我知道我的数据是有效的。下面是卷曲测试:

curl --location --request POST 'https://dev.themarket.co.nz/api/product/sku/sheet/upload' \
--header 'Content-Type: multipart/form-data' \
--header 'Authorization: <tokem goes here>  ' \
--form 'data={"MerchantId": "5233", "Overwrite": 1,"FileFormatCode": "JSON", "SourceChannel": "MERCHANT", "SourceOrg": "Shop Until", "IgnoreExistingImage": 1 }' \
--form 'file=@/Users/tim/inventory.json.gz'
这就是多部分内容的外观:

--70834bf1-1439-4681-b1d4-fb3fa1f9efef

Content-Disposition: form-data; name="data"



{"MerchantId": "5233", "Overwrite": 1,"FileFormatCode": "JSON", "SourceChannel": "MERCHANT", "SourceOrg": "Shop Until", "IgnoreExistingImage": 1 }

--70834bf1-1439-4681-b1d4-fb3fa1f9efef

Content-Disposition: form-data; name="file"; filename="inventory.json.gz"

Content-Type: application/x-gzip



H4sIAAAAAAAC/6tW8swrS80ryS+q9MksLlGyUoiuVgrOLnXOT0kFcpQcXQ0MDIyVdJQcc3LykxNLMvPzgMIWFhY6SgGpRQWpJaWJOUABAx0lH6g0TGdKalpiaU6JUm1sLQCHcFtKZQAAAA==

--70834bf1-1439-4681-b1d4-fb3fa1f9efef--

看起来您已经有了gzip文件。如果是这样,当您使用getContents()时,您将收到一个base64 endcoded值。看

你需要一些类似的东西:

body.push('Content-Type: application/x-gzip');
body.push('Content-Transfer-Encoding: base64');

实际上,看起来你的代码是基于这个答案的。传输编码部分隐藏在注释中。

谢谢,这很有意义。但这种改变仍然不起作用。我使用N/compress在脚本中创建GZIP文件并保存到文件柜。如果我手动下载该文件,然后通过CURL上传到API,这样我就知道该文件是好的。API接受请求,因此我知道多部分数据格式良好。快把我逼疯了。如果你对cUrl使用verbose模式,那么它和Netsuite主体有什么区别?
body.push('Content-Type: application/x-gzip');
body.push('Content-Transfer-Encoding: base64');