调用Microsoft Graph API创建OneNote页面时多部分负载格式错误求助
看起来你在调用OneNote API创建带图片的页面时遇到了多部分负载格式的问题,我帮你梳理几个大概率出错的地方:
1. 图片块名称不匹配
你在HTML里的图片引用是 <img src="name:image-block-name">,这里指定的图片标识是 image-block-name,但请求体里对应图片部分的 name 属性却是 MyAppPictureId——这两个名称必须完全一致,OneNote才能把图片和HTML里的引用关联起来。
把图片部分的 Content-Disposition 改成这样:
Content-Disposition: form-data; name="image-block-name"
2. 图片数据格式错误
你当前在请求体里放的是base64编码的字符串(比如...9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQ...),但对于 Content-Type: image/jpeg 的部分,OneNote API要求直接传递原始的二进制图片数据,而不是base64编码后的文本。如果你的图片是base64格式的,需要先解码成二进制再放入请求体。
3. HTML部分的多余注释
你在HTML代码外面加了 /* 和 */ 注释,这会导致Presentation部分的内容格式错误,OneNote无法正常解析。请直接去掉这对注释,保留纯HTML内容。
4. 边界符的细节检查
确保请求头里的 boundary=MyAppPartBoundary 和请求体里的所有边界标记(--MyAppPartBoundary、结尾的--MyAppPartBoundary--)完全一致,包括大小写、没有多余空格。另外,每个部分之间的换行要正确,避免出现格式混乱。
修正后的请求体示例
--MyAppPartBoundary Content-Disposition: form-data; name="Presentation" Content-Type: text/html <!DOCTYPE html> <html> <head> <title>A page with an image: Image binary data</title> <meta name="created" value="2015-11-11T12:45:00.000-8:00"/> </head> <body> <p>This page displays the uploaded image.</p> <img src="name:image-block-name" alt="a cool image" width="500"> </body> </html> --MyAppPartBoundary Content-Disposition: form-data; name="image-block-name" Content-Type: image/jpeg [此处替换为原始JPEG二进制数据,不要base64编码] --MyAppPartBoundary--
按照上面的几点调整后,应该就能解决20011的格式错误了。
备注:内容来源于stack exchange,提问作者Vishwadharshini V

