google 云翻译 API 使用 okhttp3
google cloud translation API using okhttp3
我正在开发一个 android 应用程序,我必须将用户的语音转换为文本(使用 google 云语音 API),然后将该文本转换为另一种语言(使用 google云翻译API).
现在,
我已成功将用户的语音转换为文本,但问题是在将该文本转换为另一种语言时,我在响应正文中什么也得不到。当我使用我的浏览器(例如,Google Chrome)向云翻译 API 发送请求时,它会按预期 returns(如下所示)。
{
"data": {
"translations": [
{
"translatedText": "este es el texto que debe ser traducido",
"detectedSourceLanguage": "en"
}
]
}
}
但问题是当我使用 OkHttp3 从我的应用程序发送相同的请求然后它 returns 在响应
之后
Response{protocol=h2, code=200, message=, url=https://translation.googleapis.com/language/translate/v2?target=es&key=MY_API_KEY&q=this%20is%20the%20text%20which%20is%20need%20to%20be%20translated}
body =
OkHttp-Selected-Protocol: h2
content-type: application/json; charset=UTF-8
vary: Origin
vary: X-Origin
vary: Referer
date: Sun, 30 Sep 2018 08:27:40 GMT
server: ESF
cache-control: private
x-xss-protection: 1; mode=block
x-frame-options: SAMEORIGIN
x-content-type-options: nosniff
alt-svc: quic=":443"; ma=2592000; v="44,43,39,35"
OkHttp-Sent-Millis: 1538296059111
OkHttp-Received-Millis: 1538296060590
okhttp3依赖如下图
compile 'com.squareup.okhttp3:okhttp:3.11.0'
我翻译文本的代码如下所示
private void getTranslation(String url) {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
Toast.makeText(SpeechService.this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
@Override
public void onResponse(Response response) throws IOException {
String res = response.body().toString();
String mess = response.message(); //gets nothing as message response
}
});
}
注意:即使我收到代码200,但响应消息中仍然没有任何内容
response.message() 是 HTTP 状态消息,例如来自 200 OK 的 "OK"。您还应该检查 response.code() ,它将是数字。 response.body.toString() 用于调试
@Override public String toString() {
return "Response{protocol="
+ protocol
+ ", code="
+ code
+ ", message="
+ message
+ ", url="
+ request.url()
+ '}';
}
你想要
String res = response.body().string()
我正在开发一个 android 应用程序,我必须将用户的语音转换为文本(使用 google 云语音 API),然后将该文本转换为另一种语言(使用 google云翻译API).
现在,
我已成功将用户的语音转换为文本,但问题是在将该文本转换为另一种语言时,我在响应正文中什么也得不到。当我使用我的浏览器(例如,Google Chrome)向云翻译 API 发送请求时,它会按预期 returns(如下所示)。
{
"data": {
"translations": [
{
"translatedText": "este es el texto que debe ser traducido",
"detectedSourceLanguage": "en"
}
]
}
}
但问题是当我使用 OkHttp3 从我的应用程序发送相同的请求然后它 returns 在响应
之后Response{protocol=h2, code=200, message=, url=https://translation.googleapis.com/language/translate/v2?target=es&key=MY_API_KEY&q=this%20is%20the%20text%20which%20is%20need%20to%20be%20translated}
body = OkHttp-Selected-Protocol: h2 content-type: application/json; charset=UTF-8 vary: Origin vary: X-Origin vary: Referer date: Sun, 30 Sep 2018 08:27:40 GMT server: ESF cache-control: private x-xss-protection: 1; mode=block x-frame-options: SAMEORIGIN x-content-type-options: nosniff alt-svc: quic=":443"; ma=2592000; v="44,43,39,35" OkHttp-Sent-Millis: 1538296059111 OkHttp-Received-Millis: 1538296060590
okhttp3依赖如下图
compile 'com.squareup.okhttp3:okhttp:3.11.0'
我翻译文本的代码如下所示
private void getTranslation(String url) {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
Toast.makeText(SpeechService.this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
@Override
public void onResponse(Response response) throws IOException {
String res = response.body().toString();
String mess = response.message(); //gets nothing as message response
}
});
}
注意:即使我收到代码200,但响应消息中仍然没有任何内容
response.message() 是 HTTP 状态消息,例如来自 200 OK 的 "OK"。您还应该检查 response.code() ,它将是数字。 response.body.toString() 用于调试
@Override public String toString() {
return "Response{protocol="
+ protocol
+ ", code="
+ code
+ ", message="
+ message
+ ", url="
+ request.url()
+ '}';
}
你想要
String res = response.body().string()