Newsgroup: it.comp.lang.visual-basic
Titolo: CGI con VB

Salve a tutti.
Devo fare un CGI che gira sotto Apache. Dalle prime info che sono riuscito a
reperire un CGI è un semplice EXE che messo in una directory mappata da
Apache come script, viene eseguito dal server.
Infatti sono riuscito a far apparire una msgbox con il contenuto della
stringa dei parametri:
http://mioserver.it/cgi-bin/pippo.exe?ciaoatutti
mi fa apparire una msgbox con scritto "ciaoatutti" eseguita sul server.
E fin qui ci siamo, ci sono cose però che non sono riuscito a trovare:
1- Quando devo passare una stringa di caratteri tramite un POST, devo
convertirne alcuni in %hh esempio: il carattere < viene convertito in %3C.
La mia domanda è: esiste una tabella indica tutti i caratteri che devono
essere tradotti e in cosa?
2- Normalmente un servlet ha la classe response che permette di ritornare
dei dati al chiamante, in questo caso se devo tornare dei dati: cosa uso?
Ringrazio anticipatamente chi mi darà uno spunto!
Maverick!

 essere tradotti e in cosa?
Quali sono i caratteri da convertire non so dirtelo. Però ti so dire che 3C
è esattamente il codice ASCII in esadecimale del carattere <. E ti so dire
che questo vale anche per gli altri caratteri da convertire.... Potresti
risolvere scorrendo la tua stringa e sostituendo i valori relativi... Però
non so quali sono tutti i valori da sostituire! Ad ogni modo, mi
interesserebbe sapere come hai fatto a realizzare quel semplice CGI in VB,
vorrei fare la stessa cosa anche io!
Antonio Mirarchi

 Antonio Mirarchi
Guarda, alla fine è più difficile dirlo che farlo!
Per adesso, mi è bastato fare un eseguibile standard e metterlo in una
directory mappata da Apache come ScriptAlias e lui invece di farti scaricare
l'eseguibile, lo esegue sul server, i parametri per adesso sono come riga di
comando, mi rimangono tutti gli altri problemi da risolvere!

Salve gente!
Ho qualche novità sull'argomento.
Sono riuscito a capire che sostanzialmente quando viene eseguito un CGI, il
web server semplicemente reindirizza lo standard input e lo standard output
sulla connessione socket che arriva dal client, tutto il resto è protocollo
HTTP.
Quindi quando il web server avvia il nostro eseguibile VB, a noi basta fare
un read dallo standard output e li troveremo il corpo del post. Per
rispondere al client, basta scrivere sullo standard output.
Ovviamente bisogna scrivere tutto il protocollo, non basta rispondere con
stringhe di testo qualsiasi.
esempio:
(Readfile e GetStdHandle e Writefile sono 3 Api la cui dichiarazione la si
becca con l'API viewer)
  const SDT_INPUT_HANDLE = -10&
  Dim lReadBytes As Long
  Dim lStdInHandle As Long
  Dim strBuffer As String
  dim PostData as string
  lStdInHandle = GetStdHandle(STD_INPUT_HANDLE) ' Prendo l'handle dello
standar input
  ' Leggo il corpo del post 1024B alla volta
  Do
   strBuffer = String(1024, 0)
   lReadBytes = 1024
   If ReadFile(lStdInHandle, ByVal strBuffer, 1024, lReadBytes, ByVal 0&)
Then
      postData = postData & Left(strBuffer, lReadBytes)
      If lReadBytes < 1024 Then Exit Do
   Else
      Exit Do
   End If 'ReadFile
  Loop 'Do
Per scrivere:
const STD:OUTPUT_HANDLE = -11&
strOut = ""Content-type: text/html" & Chr(10) & Chr(10) & "<HTML><HEAD><meta
http-equiv=""content-type"" content=""text/html; charset=UTF-8""</HEAD>" &
Chr(10) & Chr(10) & "<BODY>Yeah</BODY></HTML>""
WriteFile GetStdHandle(STD_OUTPUT_HANDLE), strOut, Len(strOut), lReturn,
ByVal 0&
Per quanto riguarda il GET , tutto quello che viene dopo il ? viene mandato
come parametri della riga di comando.
Maverick.

 come parametri della riga di comando.
Senti: mi puoi fare un grossissimo favore? Mi puoi mandare il progetto via
email (lo trovi l'indirizzo nel mio post)? Cosě posso vedere in pratica come
si fa... Te l'ho detto: sono molto interessato all'argomento. Comunque se
non puoi non fa niente: non ti fare problemi!
Antonio Mirarchi