Leia os pares de chave/valor em httpwebropSponse
Pergunta
Eu quero ler uma string que se parece exatamente com o seguinte:
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
... em um dicionário de preferência. Eu tentei dividir o vbcrlf (há uma em todas as linhas que posso garantir) e no '=', mas não consigo se comportar corretamente, muitas vezes saindo dos erros dos limites. Alguém tem algumas idéias fantásticas sobre como resolver isso?
Ajuda, como sempre, apreciado.
Solução
Você poderia usar um 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
Outras dicas
Eu resolvi isso com esse código bastante desagradável;
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 ajude alguém lá fora e se alguém puder sugerir melhorias, faça :)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow