Torna indietro   Hardware Upgrade Forum > Software > Programmazione

ASUS Zenbook 14 (UX3480AA): tanta autonomia con uno chassis bello e robusto
ASUS Zenbook 14 (UX3480AA): tanta autonomia con uno chassis bello e robusto
Lo chassis in Ceraluminium è il cuore di questo notebook in edizione 2026, un modello pensato per garantire produttività con le tipiche applicazioni di produttività personale e capace di offrire un'autonomia di funzionamento lontano dalla presa di corrente da riferimento. Potenza, facilità di trasporto e costruzione robusta tutto in un notebook compatto.
MSI PRO MAX: QD-OLED ultrawide per lavorare, creare e giocare
MSI PRO MAX: QD-OLED ultrawide per lavorare, creare e giocare
MSI PRO MAX 341QPXW14G è un monitor ultrawide da 34 pollici che porta la tecnologia QD-OLED di quinta generazione in un contesto principalmente orientato alla produttività. La qualità dell'immagine è elevatissima, il formato 21:9 è ideale per il multitasking e la dotazione di porte trasforma il monitor in un vero hub per Mac, PC e dispositivi mobili. Il limite principale è invece il refresh rate di soli 144 Hz, che lo allontana dai giocatori competitivi più esigenti
Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Il primo Micro RGB di Samsung per il salotto è il 65 pollici da 2.749 euro. Sul banco di misura abbiamo rilevato 2.000 nit di picco, nero assoluto con il local dimming e il 91,4% del BT.2020, il colore più ampio che abbiamo misurato su un LCD
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 12-03-2022, 20:27   #1
qwerty_race
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();
            }
        }
ma mi da questo errore su WebResponse :

//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
qwerty_race è offline   Rispondi citando il messaggio o parte di esso
Old 13-03-2022, 08:26   #2
lorenzo001
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
lorenzo001 è offline   Rispondi citando il messaggio o parte di esso
Old 13-03-2022, 10:11   #3
qwerty_race
Member
 
Iscritto dal: Jun 2020
Messaggi: 50
Quote:
Originariamente inviato da lorenzo001 Guarda i messaggi
La stringa dell'autentivazjone sembra sbagliata.
Hai ottenuto un ID di autenticazione o no?
Quello che passi è una stringa che non ha senso
Ho rivisto un po di cose, ho creato la stringa json con "JsonConvert.SerializeObject", ora mi restituisce questo messaggio:
{"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]
qwerty_race è offline   Rispondi citando il messaggio o parte di esso
Old 13-03-2022, 12:39   #4
lorenzo001
Senior Member
 
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
A chi stai rispondendo? Hai letto la mia domanda?
lorenzo001 è offline   Rispondi citando il messaggio o parte di esso
Old 15-03-2022, 09:06   #5
qwerty_race
Member
 
Iscritto dal: Jun 2020
Messaggi: 50
Quote:
Originariamente inviato da lorenzo001 Guarda i messaggi
A chi stai rispondendo? Hai letto la mia domanda?
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.
qwerty_race è offline   Rispondi citando il messaggio o parte di esso
Old 15-03-2022, 13:13   #6
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
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.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


ASUS Zenbook 14 (UX3480AA): tanta autonomia con uno chassis bello e robusto ASUS Zenbook 14 (UX3480AA): tanta autonomia con ...
MSI PRO MAX: QD-OLED ultrawide per lavorare, creare e giocare MSI PRO MAX: QD-OLED ultrawide per lavorare, cre...
Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura Samsung Micro RGB R95H, il primo LCD a LED rossi...
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre iPhone 18 Pro: la recensione del miglior iPhone ...
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34 Panasonic, 30 anni di Toughbook: la "Bibbia...
Confidential Computing, Intel concentra ...
Con l'IA, sono i candidati a fare il col...
Orologi nucleari al torio: i primi due p...
L'auto più venduta di Volkswagen ...
OneDrive, addio ai 6 TB su Microsoft 365...
I cinesi si sono già infiltrati i...
Amazon Leo si prepara a sfidare Elon Mus...
HONOR CHOICE ADO Air 20 Pro arriva in It...
D-PACK LAB, nasce a Bologna la fabbrica ...
Anthropic regala Mythos, la sua migliore...
Nucleare spaziale: NASA e DOE firmano l'...
Intel Raptor Lake NEXT, GIGABYTE è...
HP OmniBook 5 e ProBook 4: specifiche te...
Google riabilita JPEG XL su Chrome dopo ...
OpenAI, ricavi annualizzati a 50 miliard...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 04:42.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v