2017-02-07 1 views
1

Problème: Microsoft Traduire HTTP 414 sur retour long texte à traduire les demandesAzure Microsoft Traduire du texte, les résultats à long entrée dans HTTP 414

Question: Y at-il un moyen de contourner cela pour limiter les erreurs?

Contexte

Je cherche à traduire plusieurs paragraphes de texte à la fois via Microsoft Traduire API Texte dans le nouveau nuage Azure via cette API http://docs.microsofttranslator.com/text-translate.html#!/default/get_Translate. L'API semble uniquement prendre en charge l'envoi de texte via http GET et un paramètre de requête ?text=. Typiquement, je m'attendrais à être en mesure d'accomplir cela via le corps d'un POST, mais l'API semble seulement soutenir GET. Il y a un POSTE TranslateArray mais il faut toujours texts via query param selon testing/swagger. Les documents API spécifient une limite de 10 000 caractères, mais j'obtiens fréquemment des réponses d'erreur HTTP 414 Request-URI Too Long sur des tailles inférieures à cela, je suppose en raison de l'URL longue qui inclut également un jeton JWT.

Je cherche un moyen de contourner cela pour réduire mon taux d'erreur à Microsoft Translate. J'ai envisagé de segmenter le texte en plusieurs morceaux, mais sans un bon tokenizer dans la langue maternelle, je pense que je risque de briser le contexte/la signification et de déformer la traduction.

+0

Une URL peut avoir une longueur maximale d'environ 2000 caractères généralement pour que ne peut pas aller à 10 000. – juunas

+0

Oui, je suis conscient que de nombreux navigateurs ont des limites, mais cela se fait via le code et j'ai lu des limites plus élevées telles que 8192 dans Apache. Je ne suis pas sûr comment Microsoft a implémenté leur serveur mais le paramètre de requête a le texte ci-dessous dans leurs documents pour "texte" qui contribue à la source de ma confusion s'il n'y a aucun moyen d'envoyer du texte dans le corps. \t ** "OBLIGATOIRE: Une chaîne représentant le texte à traduire La taille du texte ne doit pas dépasser dix mille caractères." ** – aaa572

Répondre

0

API Translator prend en charge POST où le texte (ou les textes) sont dans le corps. Voir la Example for TranslateArray

Il est l'exemple:

<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>