Effacer les filtres
Effacer les filtres

Communication with server via API

8 vues (au cours des 30 derniers jours)
Tom Bernand
Tom Bernand le 2 Mar 2023
Commenté : Tom Bernand le 24 Mai 2024
Hello all,
I am still a newbie in communication with servers and have the following problem:
I want to automatically translate text from a database using a translator. For this I want to use the LibreTranslator (Link).
LibreTranslate directly provides an example of a query in JavaScript:
const res = await fetch("https://de.libretranslate.com/translate", {
method: "POST",
body: JSON.stringify({
q: "",
source: "auto",
target: "de",
format: "text",
api_key: ""
}),
headers: { "Content-Type": "application/json" }
});
console.log(await res.json());
Now I would like to implement this request in MATLAB. For this I have resorted to webwrite and tried to write a query as in this Example.
The content of my function is as follows:
api = 'https://de.libretranslate.com/translate';
body.q= "";
body.source = "auto";
body.target = "de";
body.format = 'text';
body.api_key = '';
if ~exist('options','var')
options = weboptions;
end
options.RequestMethod="post";
options.MediaType = "application/json";
s = webwrite(api,body,options);
When I run this now I get the following error:
---------------------------------------------------------------------------------------------------------------------------------------------------
Error using matlab.internal.webservices.HTTPConnector/copyContentToByteArray
The server returned the status 500 with message "Internal Server Error" in response to the request to URL
https://de.libretranslate.com/translate.
---------------------------------------------------------------------------------------------------------------------------------------------------
I have also already tried to create a json file that has exactly the structure from the example query and pass this. The result remained the same.
{
"methods": "POST",
"body": {
"q": "Hello",
"source": "auto",
"target": "de",
"format": "text",
"api_key": ""
},
"headers": {
"Content-Type": "application/json"
}
}
I would be very happy if someone could help me here.
Many thanks and many greetings
Tom

Réponse acceptée

Chetan
Chetan le 10 Mai 2024
Modifié(e) : Chetan le 10 Mai 2024
It appears you're encountering a "500 Internal Server Error" while trying to send a POST request to the LibreTranslate API for text translation from MATLAB, following a JavaScript example.
To tackle this in MATLAB, consider the following steps:
  • JSON Formatting: Make sure your data structure aligns with what the API expects. MATLAB's `webwrite` function automatically converts structures to JSON
  • Headers and Options: You correctly set the `MediaType` to `"application/json"`. Ensure you check and include any other necessary headers or options.
  • API Key: If the API demands an API key, verify its validity and include it in your request.
Here's a revised code snippet:
api = 'https://de.libretranslate.com/translate';
body = struct('q', "Hello", 'source', "auto", 'target', "de", 'format', 'text', 'api_key', '');
options = weboptions('RequestMethod', 'post', 'MediaType', 'application/json', 'Timeout', 30);
try
response = webwrite(api, body, options);
disp(response);
catch ME
disp('Error occurred:');
disp(ME.message);
end
detectedLanguage: [1x1 struct] translatedText: 'hallo'
Refer to the following MathWorks Documentation for more details:
Hope this helps!
  1 commentaire
Tom Bernand
Tom Bernand le 24 Mai 2024
Hello Chetan,
Thank you very much for your help!

Connectez-vous pour commenter.

Plus de réponses (0)

Produits


Version

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by