如何使用OkHttp向wit.ai发送字符串数据?
解决wit.ai /message API的请求问题
wit.ai的/message接口只支持GET请求,你要发送的文本内容需要通过URL的q查询参数传递,而不是放在POST请求体里,这就是你最初POST请求报错的原因。
修正后的完整代码示例
// 初始化OkHttpClient和HttpUrl构建器 OkHttpClient httpClient = new OkHttpClient(); HttpUrl.Builder httpBuilder = HttpUrl.parse("https://api.wit.ai/message").newBuilder(); // 添加必填的版本参数v,以及要发送的文本参数q httpBuilder.addQueryParameter("v", "20230618"); httpBuilder.addQueryParameter("q", "I'm Pat"); // 这里传入你要发送的字符串 // 构建GET请求 Request httpRequest = new Request.Builder() .url(httpBuilder.build()) .header("Authorization", "Bearer " + CLIENT_ACCESS_TOKEN) // 替换成你的CLIENT_ACCESS_TOKEN .get() .build(); // 执行请求并处理响应 try { Response response = httpClient.newCall(httpRequest).execute(); final ResponseBody responseBody = response.body(); MainActivity.this.runOnUiThread(new Runnable() { @Override public void run() { try { if (responseBody != null) { mytxtView.setText(responseBody.string()); } else { mytxtView.setText("空响应"); } } catch (IOException e) { mytxtView.setText("IOException: " + e.getMessage()); } } }); } catch (IOException e) { e.printStackTrace(); }
关键说明
- 必须通过
q查询参数传递要识别的文本,这是wit.ai/message接口的要求 - 不需要设置
Content-Type或Transfer-Encoding头,GET请求无需请求体 - 确保
v参数使用的是当前有效的API版本(格式为YYYYMMDD)
内容的提问来源于stack exchange,提问作者Kira
相关产品推荐
相关产品推荐

