|
|
|
|
Strumenti |
12-03-2022, 20:27 | #1 |
Member
Iscritto dal: Jun 2020
Messaggi: 50
|
[C#] Convertire una chiamata curl da JavaScript in C#
Salve,
potreste darmi una mano a convertire il codice JavaScript della chiamata POST che si trova nella funzione: async function ryte({ useCaseId, inputContexts }) https://github.com/rytr-me/documenta.../node/index.js In un codice C#, non riesco a trovare il modo giusto, non conosco molto JavaScript, io ho provato così: Codice:
private void GetRytrContent(string _langID, string _toneID, string _usecaseID) { string api_key = "<MY-API-KEY>"; WebRequest wr = WebRequest.Create("https://api.rytr.me/v1/ryte"); wr.ContentType = "application/json"; wr.Method = "POST"; wr.Headers.Add("Authentication", "Bearer " + api_key); using (StreamWriter sw = new StreamWriter(wr.GetRequestStream())) { string data = "{" + "\"languageId\":\"" + _langID + "\"," + "\"toneId\":\"" + _toneID + "\"," + "\"useCaseId\":\"" + _usecaseID + "\"," + "\"inputContexts\":\"{\"<USE-CASE CONTEXT-INPUT KEY-LABEL>\":\"<VALUE>\"}," + "\"variations\":\"1\"," + "\"userId\":\"<UNIQUE USER ID>\"," + "\"format\":\"html\"," + "\"creativityLevel\":\"default\"," + "}"; sw.Write(data); } WebResponse httpResponse = (WebResponse)wr.GetResponse(); //System.Net.WebException: 'Errore del server remoto: (400) Richiesta non valida.' using (StreamReader streamReader = new StreamReader(httpResponse.GetResponseStream())) { var result = streamReader.ReadToEnd(); TxtDisplay.Text = result.ToString(); } } //System.Net.WebException: 'Errore del server remoto: (400) Richiesta non valida.' Questa è la curl della richiesta: Codice:
curl \ -H "Authentication: Bearer <API KEY>" \ -H "Content-Type: application/json" \ -d '{"languageId": "<LANUGAGE ID>", "toneId": "<TONE ID>", "useCaseId": "<USE-CASE ID>", "inputContexts": {"<USE-CASE CONTEXT-INPUT KEY-LABEL>": "<VALUE>"}, "variations": 1, "userId": "<UNIQUE USER ID>", "format": "html", "creativityLevel": "default"}' \ -X POST https://api.rytr.me/v1/ryte |
13-03-2022, 08:26 | #2 |
Senior Member
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
|
La stringa dell'autentivazjone sembra sbagliata.
Hai ottenuto un ID di autenticazione o no? Quello che passi è una stringa che non ha senso |
13-03-2022, 10:11 | #3 | |
Member
Iscritto dal: Jun 2020
Messaggi: 50
|
Quote:
{"success":false,"message":"Sorry, we were unable to process your request. Please try again."} Sono dubbioso se sto sbagliando nel creare il campo: inputContexts = "{'INTEREST_LABEL':'Ti propongo un nuovo business eccezionale'}", oppure altro..., nella documentazione non è spiegato come formattarlo e con quali dati, sono risalito un po tramite l'esempio JavaScript, ma possibile che sbaglio, questo è quello che chiede: "inputContexts": {"<USE-CASE CONTEXT-INPUT KEY-LABEL>": "<VALUE>"} Ma cosa è: <USE-CASE CONTEXT-INPUT KEY-LABEL> ??? Presumo che: <VALUE> sua la frase dal cui estrapola le keywords per poi creare il post, quindi io ho inserito questo come testo: "Ti propongo un nuovo business eccezionale!" [code] public class RytrData { public string languageId { get; set; } public string toneId { get; set; } public string useCaseId { get; set; } public string inputContexts { get; set; } public string variations { get; set; } public string userId { get; set; } public string format { get; set; } public string creativityLevel { get; set; } } private void GetRytrContent(string _apyKey, string _langID, string _toneID, string _usecaseID) { WebRequest wr = WebRequest.Create("https://api.rytr.me/v1/ryte"); wr.ContentType = "application/json"; wr.Method = "POST"; wr.Headers.Add("Authentication", "Bearer " + _apyKey); RytrData RytrData = new RytrData { languageId = _langID, toneId = _toneID, useCaseId = _usecaseID, inputContexts = "{'INTEREST_LABEL':'Ti propongo un nuovo business eccezionale!'}", variations = "1", userId = "USER1", format = "text", creativityLevel = "default" }; var json = JsonConvert.SerializeObject(RytrData, Formatting.Indented); using (StreamWriter sw = new StreamWriter(wr.GetRequestStream())) { string data = json.ToString(); sw.Write(data); } WebResponse httpResponse = (WebResponse)wr.GetResponse(); using (StreamReader streamReader = new StreamReader(httpResponse.GetResponseStream())) { var result = streamReader.ReadToEnd(); TxtDisplay.Text = result.ToString(); //{"success":false,"message":"Sorry, we were unable to process your request. Please try again."} } } [code] |
|
13-03-2022, 12:39 | #4 |
Senior Member
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
|
A chi stai rispondendo? Hai letto la mia domanda?
|
15-03-2022, 09:06 | #5 |
Member
Iscritto dal: Jun 2020
Messaggi: 50
|
Io si ma tu non hai letto la mia risposta?
1) La stringa non ha senso perchè l'ho fatta a mano? Ok, per questo ho detto che l'ho ri-fatta con: "JsonConvert.SerializeObject", in modo che il formato non ha errori. 2) ID di autenticazione cosa è? Vuoi dire l'API_KEY? Si quella ce l'ho. Inoltre tutte le richieste di tipo GET per recuperare: <LANUGAGE ID>, <TONE ID>, <USE-CASE ID> funzionano perfettamente, ho già tutti gli array rispettivi, questo significa che mi connetto correttamente e quindi comunico con le API di Rytr. Il problema è la richiesta POS per eseguire la creazione del copy da parte di Rytr. Il resto del mio ultimo post è questo...: Sono dubbioso se sto sbagliando nel creare il campo: inputContexts = "{'INTEREST_LABEL':'Ti propongo un nuovo business eccezionale'}", oppure altro..., nella documentazione non è spiegato come formattarlo e con quali dati, sono risalito un po tramite l'esempio JavaScript, ma possibile che sbaglio, questo è quello che chiede: "inputContexts": {"<USE-CASE CONTEXT-INPUT KEY-LABEL>": "<VALUE>"} Ma cosa è: <USE-CASE CONTEXT-INPUT KEY-LABEL> ??? Presumo che: <VALUE> sua la frase dal cui estrapola le keywords per poi creare il post, quindi io ho inserito questo come testo: "Ti propongo un nuovo business eccezionale!" Quindi devo risolvere questi dubbi, ma non so come fare, non trovo documentazione ulteriore a quella di GitHub che è al quanto minimale: https://github.com/rytr-me/documentation Non trovo neppure esempi online di altri. |
15-03-2022, 13:13 | #6 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2760
|
Hai provato a chiamare i metodi "Use-case list" e "Use-case detail"?
Magari ti restituiscono i valori da sostituire nella chiamata che stai costruendo. |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:34.