Leer pares clave / valor en HttpWebResponse
Pregunta
quiero leer una cadena que se ve exactamente como esto:
VPSProtocol=2.22
Status=OK
StatusDetail=0000 : The Authorisation was Successful.
VPSTxId={BBF09A43-913E-14E3-B41B-E5464B6FF8A9}
SecurityKey=EH8VFZUSH9
TxAuthNo=4979698
AVSCV2=SECURITY CODE MATCH ONLY
AddressResult=NOTMATCHED
PostCodeResult=NOTMATCHED
CV2Result=MATCHED
CAVV=AAABARR5kwAAAAAAAAAAAAAAAAA=
3DSecureStatus=OK
... en un diccionario de preferencia. He tratado de división en el vbcrlf (hay uno en cada línea le puedo asegurar) y en el '=', pero no puede conseguir bastante que se comporte correctamente menudo salir de los límites errores. Alguien tiene algunas ideas fantásticas sobre cómo resolver esto?
Ayuda, como siempre, apreciado.
Solución
Se puede usar un StringReader :
Dim dic = New Dictionary(Of String, String)
Using reader = New StringReader(someString)
Dim line As String = reader.ReadLine()
While line <> Nothing
Dim tokens = line.Split("=")
If tokens.Length < 2 Then
Continue While
End If
dic.Add(tokens(0), tokens(1))
line = reader.ReadLine()
End While
End Using
Otros consejos
Me resuelto esto con esta pieza de código bastante desagradable;
Dim dictionary As New Dictionary(Of String, String)
Dim x As String = "x?" & Replace(tmp.ToString(), vbCrLf, "&")
Dim arr As String() = x.Split("?".ToCharArray())
If arr.Length >= 2 Then
Dim arr2 As String() = arr(1).Split("&".ToCharArray())
For Each item As String In arr2
Dim arr3 As String() = item.Split("=".ToCharArray())
dictionary.Add(arr3(0), arr3(1))
Next
End If
Espero que ayude a alguien por allí y si alguien puede sugerir mejoras, por favor hacer:)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow