Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza
Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza
OPPO Reno14 F 5G si propone come smartphone di fascia media con caratteristiche equilibrate. Il device monta processore Qualcomm Snapdragon 6 Gen 1, display AMOLED da 6,57 pollici a 120Hz, tripla fotocamera posteriore con sensore principale da 50MP e generosa batteria da 6000mAh con ricarica rapida a 45W. Si posiziona come alternativa accessibile nella gamma Reno14, proponendo un design curato e tutto quello che serve per un uso senza troppe preoccupazioni.
Destiny Rising: quando un gioco mobile supera il gioco originale
Destiny Rising: quando un gioco mobile supera il gioco originale
Tra il declino di Destiny 2 e la crisi di Bungie, il nuovo titolo mobile sviluppato da NetEase sorprende per profondità e varietà. Rising offre ciò che il live service di Bungie non riesce più a garantire, riportando i giocatori in un universo coerente. Un confronto che mette in luce i limiti tecnici e strategici dello studio di Bellevue
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo
Plaud Note Pro è un registratore digitale elegante e tascabile con app integrata che semplifica trascrizioni e riepiloghi, offre funzioni avanzate come template e note intelligenti, ma resta vincolato a un piano a pagamento per chi ne fa un uso intensivo
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: 2774
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


Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza Sottile, leggero e dall'autonomia WOW: OPPO Reno...
Destiny Rising: quando un gioco mobile supera il gioco originale Destiny Rising: quando un gioco mobile supera il...
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo Plaud Note Pro convince per qualità e int...
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy? Google Pixel 10 è compatto e ha uno zoom ...
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre Prova GeForce NOW upgrade Blackwell: il cloud ga...
Renault lancia la super promo: porte ape...
Il tuo portatile ASUS ROG non funziona c...
Zoom migliora il suo operatore virtuale ...
Traguardo Omoda & Jaecoo in Italia: ...
EHT mostra nuove immagini di come cambia...
Il gioiellino di Fastned: aperti in Belg...
La nuova mini workstation AI di MinisFor...
Formula 1 2026, nuove gare Sprint in cal...
MacBook Pro con display OLED e supporto ...
Poste Italiane: dati di milioni di utent...
Microsoft blocca RaccoonO365, rubate olt...
15 anni dopo Skate 3, il gioco torna sot...
Molte novità per MongoDB: version...
Cina, stop alle GPU NVIDIA: Pechino inti...
Google Pixel 10 con sconti super: ecco q...
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: 18:51.


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