400 Bad Request - Microsoft Translation API - Jooscript& Java的

时间:2017-06-07 14:38:23

标签: java groovy libreoffice microsoft-translator jodconverter

我使用LibreOffice / JOD库基于我手动创建的ODT模板生成PDF文件。

这些模板使用jooscript使用数据库中的值填充模板。这些数据库中的两(2)个数据库值被翻译成中文。

其中一个值是正确翻译的字符串,但截至2017年5月19日另一个值,日期时间无法转换。

我收到来自API的HTTP 400 Bad Request错误消息。

翻译页面如下所示:

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的格式为日期:dd-MON-yy

任何帮助都表示赞赏,因为此代码保持不变,并且过去几年一直在运作。

更新

引起:java.io.IOException:服务器返回HTTP响应代码:400为URL:http://api.microsofttranslator.com/v2/Http.svc/Translate?text=06+December+2017&from=en&to=zh-CHT

请求:翻译?text = 06 + December + 2017& from = en& to = zh-CHT

发现当我们将文本更改为任何内容时,它会给出相同的响应,即翻译" Hello"会给出同样的错误。

预期回应:六日十二月二零一七年,即。 6天,12个月,2017年。虽然使用SimpleDateFormat将格式更改为dd MMM yyyy。

0 个答案:

没有答案