Ciao a tutti,
mi ritrovo in un’insolita siutazione.
Hi effettuata una chiamata rest con HTTPSecureSocket su Web 1.0
Questa chiamata mi serve per recuperarmi un paramtetro per costruirmi un url,
In seguito eseguo il comando ShowURL(urlUtente, false)
Quando eseguo questo comando la WebApp si spegne di colpo. Ho provato sia su Mac che su Linux.
Come è possibile risolvere? qualcuno ha qualche suggerimento?
Grazie
Ho scoperto che non è lo ShowUrl. Ma l’oggetto HTTPSecureSocket che dopo pochi secondi chiude l’Applicazione.
Qualcuno ha mai avuto questo problema???
Xojo 2019 R3.2
Ysi HTTPSecureSocket per chiamare in post un servizio Rest remoto (Stripe) in modo che mi restituisca l’url del checkout.
Questo è il codice che dopo un po fa spegnere l’applicazione:
Dim urlChecout as String
Try
Dim parametro as New Parametro
Dim checkoutUrl As String
//Inserire pagamento
//.....
// La tua chiave API segreta
Dim apiKey As String = parametro.caricaParametro( Parametro.P_STRIPE_KEY).valore
Dim stripeSocketTmp as New StripeSocket
stripeSocketTmp.Secure = True
stripeSocketTmp.ConnectionType = SSLSocket.TLSv12
stripeSocketTmp.SetRequestHeader("Authorization","Bearer " + apiKey)
// URL dell'endpoint Stripe per creare una sessione di checkout
Dim url As String = "https://api.stripe.com/v1/checkout/sessions"
Dim queryString as String
queryString = "?cid="+commissioneTmp.id_.ToString
Dim urlSuccess As String
urlSuccess = “htpps://mysite.com:9190#success”
Dim urlCancel as String
urlCancel = “htpps://mysite.com:9190#cancel”
//Parsing Costo
Dim costoStr as String
costoStr = commissioneTmp.budgetFinale
// Definisci i parametri della sessione di checkout
Dim postData As New Dictionary
postData.Value("payment_method_types[]") = "card"
postData.Value("line_items[][price_data][currency]") = "eur"
postData.Value("line_items[][price_data][product_data][name]") = “Prodotto Test”
postData.Value("line_items[][price_data][unit_amount]") = costoStr
postData.Value("line_items[][quantity]") = "1"
postData.Value("mode") = "payment"
postData.Value("success_url") = urlSuccess
postData.Value("cancel_url") = urlCancel
// Invia la richiesta POST in modo sincrono
stripeSocketTmp.SetFormData(postData)
Dim result As String
result = stripeSocketTmp.Post(url , 0) // Synchronous
result = DefineEncoding(result, Encodings.UTF8)
Dim jsonStripe as New JSONItem(result)
// Ottieni l'ID della sessione di checkout
urlChecout = jsonStripe.Value("url")
// Mostra il link di checkout o reindirizza l'utente
//ShowURL(urlCheckout, false)
stripeSocketTmp.Disconnect
stripeSocketTmp.Close
Catch
End Try
return urlChecout
Ho provato a cambiarei l timeout del metodo Post ma niente.
Ho inserito Disconect e Close ma niente.
Soluzioni?
Ho seguito la stessa applicazione su MacOs e su Fedora, ed in entrmbe lo stesso problema.
La webApp è avviat in standalone.
Ho chiuesto all’AI ma niente soluzioni.
Grazie
Cosa ho fatto,
ho spostato questo codice dall’evento Action del Button e l’ho messo nell’evento Open della form. Per caricarmi l’url.
Il butto fa solo lo ShowUrl.
Il locale quando avvio in debug l’applicazione funziona.
Sul server con l’applicazione avviata in standalone no, l’applicazione si chiude quando arriva all’evento Open.
Sto cercando varie soluzioni…
Ho risolto utilizzando un GenericObject e come super classe ereditando URLConnection
In quanto URLConnection non era nella lista degli oggetti disponibili.
Utilizzando URLConnection l’applicazione non si chiude.