Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Vb.net e Newtonsoft.Json
Forum - C# / VB.NET - Vb.net e Newtonsoft.Json

Avatar
nestor (Normal User)
Newbie


Messaggi: 2
Iscritto: 31/07/2017

Segnala al moderatore
Postato alle 14:52
Lunedì, 31/07/2017
Buongiorno a tutti sono nuovo del forum e questo è il mio primo messaggio.
Devo prelevare dei dati in formato Json dalle api che mette a disposizione un sito, i dati sono risultati di eventi sportivi, in un modulo ho inserito questo codice
Codice sorgente - presumibilmente VB.NET

  1. Imports System.Net
  2. Imports System.Text
  3. Imports System.IO
  4. Imports Newtonsoft.Json
  5.  
  6. Module Score
  7. Private Function SendScoreReq(ByVal jsonString As String)
  8.  
  9.         Dim request As HttpWebRequest = _
  10. WebRequest.Create _
  11. ("https://api.betfair.com/exchange/scores/json-rpc/v1")
  12.  
  13.         Dim byteArray As Byte() = Encoding.UTF8.GetBytes(jsonString)
  14.  
  15.         Dim responseFromServer As String = ""
  16.  
  17.         Try
  18.             request.Method = "POST"
  19.             request.ContentType = "application/json"
  20.             request.ContentLength = byteArray.Length
  21.            request.Headers.Add("X-Application: gbFh7fGQUEWATIAG")
  22.         request.Headers.Add("X-Authentication: ysbZQhrft42AG9fSfK6uwNnEd8rZFFKYSQRP7OOraSU=")
  23.             request.AutomaticDecompression = _
  24. DecompressionMethods.GZip Or DecompressionMethods.Deflate
  25.             request.ServicePoint.Expect100Continue = False
  26.             request.Timeout = 2000
  27.  
  28.             Dim dataStream As Stream = request.GetRequestStream()
  29.             dataStream.Write(byteArray, 0, byteArray.Length)
  30.  
  31.             Dim response As WebResponse = request.GetResponse()
  32.             dataStream = response.GetResponseStream()
  33.  
  34.             Dim reader As New StreamReader(dataStream)
  35.             responseFromServer = reader.ReadToEnd()
  36.  
  37.            msgbox(responseFromServer)
  38.             reader.Dispose()
  39.             dataStream.Dispose()
  40.             response.Dispose()
  41.  
  42.         Catch ex As WebException 'Exception
  43.         End Try
  44.  
  45.         Return responseFromServer
  46.  
  47.     End Function
  48.  
  49.   Public Class listScoresRequest
  50.         Public jsonrpc As String = "2.0"
  51.         Public method As String = "ScoresAPING/v1.0/listScores"
  52.         Public params As Params
  53.         Public id As Integer = 1
  54.     End Class
  55.  
  56. Public Class Params
  57.         Public Property updateKeys() As Updatekey
  58.     End Class
  59.  
  60.     Public Class Updatekey
  61.         Public Property eventId As String
  62.     End Class
  63.  
  64.   Function SerializeListScoresRequest(ByVal requestList As  _
  65.       List(Of listScoresRequest))
  66.  
  67.         Dim temp As String = JsonConvert.SerializeObject(requestList)
  68.        MsgBox.Print(temp)
  69.  
  70.         Return temp
  71.  
  72.         Return JsonConvert.SerializeObject(requestList)
  73.  
  74.     End Function
  75.  
  76. Public Class UpdateContext
  77.         Public eventTime As String
  78.         Public lastUpdated As DateTime
  79.         Public updateSequence As Integer
  80.         Public updateType As String
  81.     End Class
  82.  
  83.     Public Class Values
  84.         Public player2PointsWon As String
  85.         Public player1 As String
  86.         Public player2 As String
  87.         Public player1SetScores As String
  88.         Public player2GamesWon As String
  89.         Public player1GamesWon As String
  90.         Public player1SetsWon As String
  91.         Public player2SetsWon As String
  92.         Public player2SetScores As String
  93.         Public isLive As String
  94.         Public player1PointsWon As String
  95.         Public eventTypeStatus As String
  96.         Public startDate As DateTime
  97.     End Class
  98.  
  99.     Public Class Result
  100.         Public eventId As String
  101.         Public eventTypeId As String
  102.         Public updateContext As UpdateContext
  103.         Public values As Values
  104.         Public eventStatus As String
  105.         Public responseCode As String
  106.     End Class
  107.  
  108.     Public Class listScoresResponse
  109.         Public jsonrpc As String
  110.         Public result As Result()
  111.         Public id As Integer
  112.     End Class
  113.  
  114.     Function DeserializeListScoresResponse(ByVal jsonResponse As String)
  115.  
  116.         Return JsonConvert.DeserializeObject(Of  _
  117.         listScoresResponse())(SendScoreReq(jsonResponse))
  118.  
  119.     End Function
  120.  
  121. End Module


nell' evento click del Button ho inserito questo codice
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  2.  
  3.  Dim requestListScores As New List(Of listScoresRequest)
  4.  
  5.         Dim requestScores As New listScoresRequest
  6.         Dim params As New ParamslistScores
  7.         requestScores.params = params
  8.  
  9.         requestListScores.Add(requestScores)
  10.  
  11.         Dim scores() As listScoresResponse
  12.  
  13.         scores =
  14.        DeserializeListScoresResponse(SerializeListScoresRequest(requestListScores))
  15.  
  16.     End Sub


la stringa json che dovrei ottenere è
Codice sorgente - presumibilmente Plain Text

  1. [{"jsonrpc": "2.0", "method": "ScoresAPING/v1.0/listScores", "params": {"updateKeys":[{"eventId":"28260999"}]}, "id": 1}]


mentre ottengo questa
Codice sorgente - presumibilmente Plain Text

  1. [{"jsonrpc":"2.0","method":"ScoresAPING/v1.0/listScores","params":{"updateKeys":null},"id":1}]


non capisco come inserire la stringa
Codice sorgente - presumibilmente Plain Text

  1. [{"eventId":"28260999"}]}


ringrazio chi mi aiuterà.

Ultima modifica effettuata da nestor il 31/07/2017 alle 14:54
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6100
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 0:56
Martedì, 01/08/2017
Se rileggi il tuo codice, noterai che in nessuna parte viene popolato il campo params.updateKeys (che di default e' appunto null).

Inizializzalo in maniera appropriata ed otterrai il risultato voluto.


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
nestor (Normal User)
Newbie


Messaggi: 2
Iscritto: 31/07/2017

Segnala al moderatore
Postato alle 14:09
Martedì, 01/08/2017
Testo quotato

Postato originariamente da pierotofy:

Se rileggi il tuo codice, noterai che in nessuna parte viene popolato il campo params.updateKeys (che di default e' appunto null).

Inizializzalo in maniera appropriata ed otterrai il risultato voluto.


Come faccio a inizializzarlo.

PM Quote