通过Postman调用Tableau REST API发布资源时遇Content-Type不支持错误
解决Tableau REST API发布工作簿/数据源的406000错误
问题场景
尝试通过REST API将工作簿发布到Tableau Server,将以下curl请求导入Postman执行:
curl "https://MY_SERVER/api/3.4/sites/site-id/workbooks" -X POST -H "X-Tableau-Auth:credentials token" -H "Content-Type: multipart/mixed;" -F "request_payload=@publish-workbook.xml" -F "tableau_workbook=@MY_WORKBOOK.twbx"
收到错误响应:
<?xml version='1.0' encoding='UTF-8'?> <tsResponse xmlns="http://tableau.com/api" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://tableau.com/api https://help.tableau.com/samples/en-us/rest_api/ts-api_3_18.xsd"> <error code="406000"> <summary>Bad Request</summary> <detail>Content type 'multipart/form-data;boundary=--------------------------313748027746018569295475' not supported</detail> </error> </tsResponse>
发布数据源时出现相同类型错误,目标是成功将工作簿/数据源发布至Tableau Server。
原因
Tableau REST API发布接口要求请求使用multipart/mixed类型,但Postman导入curl请求时,会自动将请求格式转为multipart/form-data,与API要求的格式不匹配,导致服务器返回内容类型不支持的错误。
解决步骤
1. 修正请求头的Content-Type
- 在Postman的请求头中,将
Content-Type设置为multipart/mixed,不要添加多余的分号,也不要手动指定boundary(让Postman自动生成符合规范的boundary)。
2. 配置请求体的各部分参数
使用Postman的form-data模式构建请求体,为每个部分设置正确的属性:
- request_payload部分:
- Key填写
request_payload - 类型选择
File,上传你的publish-workbook.xml文件 - 点击该部分的
Headers按钮,添加Content-Type: text/xml
- Key填写
- tableau_workbook部分:
- Key填写
tableau_workbook - 类型选择
File,上传你的.twbx工作簿文件 - 添加头部
Content-Type: application/vnd.tableau.packaged-workbook
- Key填写
3. 数据源发布的适配调整
如果是发布数据源,只需做以下替换:
- 请求URL改为数据源接口(如
/api/3.4/sites/site-id/datasources) - 上传文件替换为
.tdsx或.tds格式的数据源文件 - 对应部分的Content-Type改为
application/vnd.tableau.datasource
4. 验证请求格式
发送请求前,确认整个请求的结构符合multipart/mixed规范,每个子部分都有正确的Content-Type,避免格式不匹配问题。
内容的提问来源于stack exchange,提问作者Subham Sen
相关产品推荐
相关产品推荐

