2017-02-07 13 views
1

Проблема: Microsoft Перевести Возвраты HTTP 414 на длинном тексте перевод запросовAzure Microsoft Перевести текст, результаты Длинного ввода в HTTP 414

Вопрос: Есть ли способ обойти это, чтобы ограничить ошибки?

фон

Я пытаюсь перевести несколько абзацев текста одновременно через Microsoft Перевести Text API в новом Azure облаке с помощью этого API http://docs.microsofttranslator.com/text-translate.html#!/default/get_Translate. API, похоже, поддерживает только отправку текста через http GET и параметр запроса ?text=. Обычно я ожидаю, что смогу выполнить это через тело POST, однако API, похоже, поддерживает GET. Существует TranslateArray POST, но он по-прежнему принимает texts через запрос param в соответствии с тестированием/чванством.

API docs определяет предел в 10 000 символов, но часто получаю HTTP 414 Request-URI Too Long ответы об ошибках по размерам, меньшим, чем это, я предполагаю из-за длинного URL-адреса, который также включает токен JWT.

Я ищу способ обойти это, чтобы снизить коэффициент ошибок до Microsoft Translate.

Я рассмотрел сегментирование текста на несколько фрагментов, но без хорошего токенизатора на родном языке, я думаю, что я рискую сломать контекст/смысл и исказить перевод.

+0

URL-адрес может иметь максимальную длину около 2000 символов, как правило, так что не может идти до 10000. – juunas

+0

Да, я знаю, что у многих браузеров есть ограничения, но это выполняется с помощью кода, и я читал о более высоких ограничениях, таких как 8192 в Apache. Я не уверен, как Microsoft внедрила свой сервер, но параметр запроса имеет ниже в своих документах для «текста», что способствует источнику моей путаницы, если нет способа отправить текст в теле. \t ** "ТРЕБУЕТСЯ. Строка, представляющая текст для перевода. Размер текста не должен превышать десяти тысяч символов." ** – aaa572

ответ

0

API-переводчик поддерживает POST, где текст (или тексты) находятся в теле. См Example for TranslateArray

Там пример есть:

<TranslateArrayRequest> 
    <AppId /> 
    <From>language-code</From> 
    <Options> 
    <Category xmlns="http://schemas.datacontract.org/2004/07/Microsoft.MT.Web.Service.V2" >string-value</Category> 
    <ContentType xmlns="http://schemas.datacontract.org/2004/07/Microsoft.MT.Web.Service.V2">text/plain</ContentType> 
    <ReservedFlags xmlns="http://schemas.datacontract.org/2004/07/Microsoft.MT.Web.Service.V2" /> 
    <State xmlns="http://schemas.datacontract.org/2004/07/Microsoft.MT.Web.Service.V2" >int-value</State> 
    <Uri xmlns="http://schemas.datacontract.org/2004/07/Microsoft.MT.Web.Service.V2" >string-value</Uri> 
    <User xmlns="http://schemas.datacontract.org/2004/07/Microsoft.MT.Web.Service.V2" >string-value</User> 
    </Options> 
    <Texts> 
    <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">string-value</string> 
    <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">string-value</string> 
    </Texts> 
    <To>language-code</To> 
</TranslateArrayRequest>