You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java17调用谷歌翻译获取发音音频遇400错误及相关问题咨询

问题解答

1. 代码导致400错误的常见原因

  • 请求体格式错误:谷歌batchexecute接口不接受普通JSON请求体,要求是application/x-www-form-urlencoded格式,核心参数f.req是一个JSON数组的字符串(需正确转义),直接发送JSON对象会触发400。
  • 缺失关键请求头:必须携带User-Agent(模拟浏览器)、Content-Type: application/x-www-form-urlencoded,部分场景还需要Referer: https://translate.google.com/、Cookie(部分地区验证需要),缺少这些会被服务器判定为非法请求。
  • 参数结构错误:f.req内部的数组参数顺序、内容必须严格匹配浏览器请求,比如文本内容的位置、语言代码格式(如en不能写成english)、发音类型参数错误,都会导致服务器解析失败。
  • 编码问题:f.req的字符串需要正确URL编码,Java中如果用URLEncoder.encode时未指定UTF-8编码,会导致特殊字符转义错误。

正确的请求体构造示例(Java):

String fReq = "[[\"jQ1olc\",\"[[\\\"hello\\\",\\\"en\\\",\\\"zh-CN\\\",true],[null]]\",null,\"generic\"]]";
String requestBody = "f.req=" + URLEncoder.encode(fReq, StandardCharsets.UTF_8) + "&rpcids=jQ1olc";

2. Chrome开发者工具查看发音响应的步骤

  • 打开谷歌翻译页面,按F12调出开发者工具,切换到Network标签。
  • 勾选左上角的「Preserve log」避免请求被刷新清空;在搜索框输入batchexecute或translate_tts筛选目标请求。
  • 点击页面上的发音喇叭触发音频请求:
    • 找到translate_tts请求:直接查看Response标签,显示二进制音频内容,可右键「Save as」保存为mp3。
    • 找到batchexecute请求:查看Response标签,响应是多段文本拼接格式,找到包含https://translate.google.com/translate_tts的段落,里面就是音频的直接URL。

3. Python/PHP转译Java代码的常见失误

  • 请求体构造差异:Python/PHP可直接拼接字符串或用库自动处理urlencode,但Java中如果误用JsonObject转字符串后直接发送,而非将f.req作为urlencoded参数传递,会导致格式不匹配。
  • 转义字符处理错误:Python字符串的转义规则和Java不同,比如Python的"[\"hello\"]"转成Java时需要写成"[[\\\"hello\\\"]]",转译时未正确处理双引号转义会导致f.req解析失败。
  • 请求头遗漏:Python的requests库会自动添加部分默认头(如Accept-Encoding),但Java的HttpURLConnection或OkHttp需要手动设置所有必要头,遗漏后会触发400。
  • 编码格式忽略:Python的urlencode默认用UTF-8,但Java的URLEncoder在未指定编码时会用系统默认编码,导致特殊字符(如中文)转义错误。

内容的提问来源于stack exchange,提问作者joseluisbz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 22:14:58