400 неверный запрос - Microsoft Translation API - Jooscript & Java

Я использую библиотеку LibreOffice/JOD для создания PDF-файлов на основе шаблона ODT, который я создал вручную.

Эти шаблоны используют jooscript для заполнения шаблона значениями из базы данных. Два (2) из ​​этих значений базы данных переведены на китайский язык.

Одним из этих значений является строка, которая корректно переводится, однако по состоянию на 19 мая 2017 года другое значение даты и времени не может быть преобразовано.

Я получаю сообщение об ошибке HTTP 400 Bad Request от API.

Страница переводчика выглядит следующим образом:

package com.anguillafsd.acorn.pam.conf;
import wslite.rest.*
import wslite.http.auth.*
import java.text.SimpleDateFormat
import java.util.Date;

import javax.management.monitor.Monitor.NumericalType;

import com.anguillafsd.acorn.pam.conf.NumericTranslator

import com.anguillafsd.acorn.pam.util.Translatable

class Translator implements Translatable{

def id = *********
def secret = *********
def getToken = {
    def client = new RESTClient("https://datamarket.accesscontrol.windows.net/v2/OAuth2-13")

    try{
        client.post(){
            type "application/x-www-form-urlencoded"
            urlenc client_id:id , client_secret:secret , scope: "http://api.microsofttranslator.com", grant_type: "client_credentials"
        }.json.access_token
    }
    catch(e){ e.printStackTrace(); return null;}

}

public String translate(String text, String from, String to){
    def client = new RESTClient("http://api.microsofttranslator.com/v2/Http.svc/Translate")
    client.get(path:'', query:[text:"$text", from:"$from", to:"$to"], headers:["Authorization":"Bearer ${getToken()}"]).xml
}

public String translateDate(Date date,String to){
    def numericTranslator = new NumericTranslator()
    def df = new SimpleDateFormat("dd MMMM yyyy")
    def txt = translate(df.format(date), 'en', to)
    def yearMatch = (txt =~ /(\d{4})/)
    yearMatch.each {key,value -> key.each { txt = txt.replaceFirst(it, numericTranslator.translate(Long.parseLong(it),to)) }}

    def otherMatch = (txt =~ /\d{1,2}/)
    otherMatch.each{value -> txt = txt.replaceFirst(value,numericTranslator.translate(Long.parseLong(value),to))}
    return txt
}

public String translateNumber(BigInteger number, String to) {
    def numericTranslator = new NumericTranslator()
    numericTranslator.translate(number,to)
}

}

Jooscript, используемый для перевода даты и времени, выглядит следующим образом: certificate.issueDate будучи переменной базы данных.

${translate(certificate.issueDate?datetime,"en","zh-CHT" )}

Формат certificate.issueDate Дата: ДД-МОН-ГГ

Любая помощь приветствуется, так как этот код остается неизменным и работает в течение последних нескольких лет.

Обновлено:

Причина: java.io.IOException: сервер вернул код ответа HTTP: 400 для URL: http://api.microsofttranslator.com/v2/Http.svc/Translate?text=06+December+2017&from=en&to=zh-CHT декабря+2017&from=en&to=zh-CHT

Запрос: Перевести? Text = 06 + декабрь + 2017 & from = en & to = zh-CHT

Обнаружено, что когда мы изменяем текст на что-либо, он дает тот же ответ, то есть перевод "Hello" выдает ту же ошибку.

Ожидаемый ответ: 六 日 十二 月 二零一七年, т.е. 6 дней, 12 месяцев,2017 год. хотя формат меняется с помощью SimpleDateFormat на dd MMM гггг.

0 ответов

Другие вопросы по тегам