3 messaggi dal 01 settembre 2011
Salve a tutti,
da molti giorni impreco su un problema bloccante.
Devo inviare un parametro ad un WebService che ho scritto, si tratta di un codice fiscale in base al quale il WS interroga un database e restituisce cognome e nome del paziente (ho secretato i parametri di accesso al db, non accessibile direttamente dall'esterno per ovvi motivi di privacy e di sicurezza):

<WebMethod()> _
Public Function CercaPaz(ByVal codfisc As String) As String

Dim stringaconn As String = "Data Source=SERVER\sqlexpress;Initial Catalog=xxxxx;User ID=xx;Password=xxxxx; Integrated Security=False"
Dim querySQL As String = "SELECT * FROM Pazienti WHERE CodFisc='" & codfisc & "'"
Dim connection As New SqlConnection(stringaconn)
Dim command As New SqlCommand(querySQL, connection)
connection.Open()
Dim myDataAdapter As New SqlDataAdapter()
myDataAdapter.SelectCommand = command
Dim myDataSet As New DataSet()
myDataAdapter.Fill(myDataSet)
connection.Close()
Dim cognome As String
Dim nome As String
For Each rec As DataRow In myDataSet.Tables(0).Rows
cognome = rec("Cognome")
nome = rec("Nome")
Next rec
Return cognome & " " & nome

End Function

Il client che chiama il WS presenta una casella di testo e un bottone.
Come si può vedere qui, ho caricato il riferimento al servizio Web e lo richiamo nella routine attivando il client Soap.

Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click

Dim objWS2 As ServiceReference1.WebServiceSoap = New ServiceReference1.WebServiceSoapClient
Label2.Text = objWS2.CercaPaz(TextBox3.Text)

End Sub

Ma quando tento di passare il contenuto della textbox al WS - che deve contenere il codice fiscale - si rifiuta di passarglielo con questo errore:
"Impossibile convertire il valore di tipo 'String' in ServiceReference1.CercaPazRequest'"

Ho provato anche ad aggirare il problema convertendo i caratteri della textbox nei rispettivi codici Ascii in modo da passarli come numeri, ma quando il WS restituisce la stringa l'errore si sposta più avanti.

Mi pare assurdo, funzioni analoghe in Classic ASP funzionavano benissimo, così come funzionano i Web Service che ricevono e restituiscono dati numerici.
Qualcuno può aiutarmi???
Grazie Saluti
Modificato da sergio65 il 25 gennaio 2015 20.12 -
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao Sergio,
fatti suggerire dall'intellisense di Visual Studio qual è il tipo giusto da usare come argomento di CercaPaz. Non si tratta di una stringa, ma di un ServiceReference1.CercaPazRequest, come ti dice l'errore.

Dunque istanzia quell'oggetto. Al suo interno ci sarà una proprietà - credo di nome codfisc, a cui dovrai assegnare il valore della textbox.

Esempio (a grandi linee):
Dim richiesta As New ServiceReference1.CercaPazRequest()
richiesta.codfisc = TextBox3.Text
Dim risposta = objWS2.CercaPaz(TextBox3.Text)

Fai anche caso al tipo di risposta. Potrebbe anche lei non essere una stringa ma un oggetto di altro tipo, che conterrà anch'esso una proprietà da cui dovrai leggere la stringa restituita dal webmethod.

ciao,
Moreno
Modificato da BrightSoul il 25 gennaio 2015 23.07 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.