通过LSL向Pastebin提交数据返回406 Not Acceptable错误如何解决
"RESPONSE:Not Acceptable: None of your requested content types is supported. STATUS:406"
问题原因与解决方案
核心错误原因
- 你设置的
text/plain请求MIME类型不符合Pastebin API要求,该接口要求POST提交表单数据必须使用application/x-www-form-urlencoded类型,这是触发406错误的直接原因 - 你把所有POST参数放在了URL查询串中,Pastebin API要求POST参数必须放在请求体中传递
- 你构造参数时使用了HTML转义符
&代替实际的参数连接符&,会导致参数解析失败 HTTP_ACCEPT头不需要指定charset,仅设置为text/plain即可匹配接口返回的响应格式
修正代码
替换你原脚本中llHTTPRequest相关的代码段即可:
if(paste_url == "") { // 构造符合要求的POST请求体 string post_body = "api_option=paste&api_dev_key=" + llEscapeURL(api_key) + "&api_paste_private=" + llEscapeURL(privacy) + "&api_paste_name=" + llEscapeURL("test_lsl") + "&api_paste_code=" + llEscapeURL(paste_message); // 发送修正后的请求 req = llHTTPRequest("https://pastebin.com/api/api_post.php", [ HTTP_MIMETYPE, "application/x-www-form-urlencoded;charset=utf-8", HTTP_METHOD, "POST", HTTP_EXTENDED_ERROR, TRUE, HTTP_ACCEPT, "text/plain" ], post_body); }
额外注意事项
paste_message不需要额外加message=前缀,api_paste_code对应的值就是完整的粘贴内容,前缀会被直接存入粘贴文本中,不需要的话可以删掉- 如果你要创建私有粘贴,需要补充
api_user_key参数到请求体中,否则私有粘贴会创建失败 - LSL的
llEscapeURL会自动处理UTF-8编码,不需要额外做编码转换
内容的提问来源于stack exchange,提问作者Alistair Ian Dgb Brownlee
相关产品推荐
相关产品推荐

