-1
私は特定のテキストを翻訳するためにgoogle translator APIを使用しています。言語がドロップダウンから選択され、その値がサーブレットに送信されます。サーブレットの翻訳方法が呼び出されます。しかし、私は次のエラーを取得します。Google Translator APIへのアクセス
com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Reque
st
{
"code": 400,
"errors": [
{
"domain": "global",
"message": "Invalid Value",
"reason": "invalid"
}
],
"message": "Invalid Value"
}
dropdown.jsp
<form action="TextTranslation" method="post" class="form" role="form" >
<div class="row">
<div id = "imageView" class="col-lg-8 center-block ">
<div class="btn-group">
<select name="country">
<%
Map<String,String> langCode = x.getCountryList();
for(Object key :langCode.keySet())
{%>
<option value="<%=(String)key%>" > <%=langCode.get(key) %> </option>
<%
System.out.println((String)key);
}
String name = request.getParameter("country");
%>
</select>
<input type="hidden" name="code" value = "<%=name%>"/>
</div>
<input type="submit" class= "btn btn-image" value="Translate">
<a href="#search" class="btn btn-default bg-light-gray">Search Text</a>
</div>
</div>
</form>
textTranslation.java
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
HttpSession extractedText = request.getSession();
String imageName = (String) extractedText.getAttribute("text");
System.out.println("This is "+imageName);
String name = request.getParameter("country");
if(name == null)
{
System.out.println("null");
}
System.out.println("I selected " +name);
//String name = "it";
TranslatorApi translation = new TranslatorApi();
String outputText = translation.getTranslate(imageName, name);
System.out.println("Second"+outputText);
request.setAttribute("outputText", outputText);
RequestDispatcher sndValue = request.getRequestDispatcher("/translation.jsp");
sndValue.forward(request, response);
}
TranslatorApi.java
private String apiKey = "AIzaSyCX2O-pteDLJLeMivT47kD9pucEv67QECQ";
public String getTranslate(String textToBeTranslated, String translateLang)
{
Translate translte = null;
String result = null;
try
{
try {
translte = new Translate.Builder(com.google.api.client.googleapis.javanet.GoogleNetHttpTransport.newTrustedTransport(), com.google.api.client.json.gson.GsonFactory.getDefaultInstance(), null)
.setApplicationName("OCRProject")
.build();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
catch(GeneralSecurityException ex)
{
ex.printStackTrace();
}
Translate.Translations.List list = null;
try {
list = translte.new Translations().list(Arrays.asList(textToBeTranslated),translateLang);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
list.setKey(apiKey);
TranslationsListResponse response = null;
try {
response = list.execute();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for (TranslationsResource tr : response.getTranslations()) {
result = tr.getTranslatedText();
}
return result;
}
しかし、私はハード
0123とコード値をコーディングする場合String name = "ES";
それは翻訳されたテキストを与える。私がドロップダウンで渡された値をチェックすると、nullではありません。そのコード値はコンソールに正しく表示されます。誰もが知っていますか?事前にありがとう