Nous avons un client d'impression de base, qui écoute les connexions envoyées à partir du Web en utilisant Ajax. Il y a plusieurs vairables envoyés sur demande, par exemple Jquery pour le contexte:TcpListener gérer les variables de réponse POST
$.ajax({
url : 'http://127.0.0.1:13000',
type : 'POST',
data : {
'shipmentNumber': 'SAMPLESN998SSkLAIS',
'labelType': 'labelTypePostageEND',
'pdfLabel': 'pdfLabel__'
}
Ceci est considéré comme
POST/HTTP/1.1 Host: 127.0.0.1:13000 Connection: keep-alive Content- Longueur: 70621 Accepter: / Origine: null Utilisateur-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/59.0.3071.109 Safari/537.36 Type de contenu: application/x-www-form-urlencoded; charset = UTF-8 Accept-Encoding: gzip, deflate, br Accept-Language: fr-FR, fr-fr; q = 0.8, en; q = 0.6 shipmentNumber = SAMPLESN998SSkLAIS & labelType = labelTypeRoyalMailEND & pdfLabel =
J'ai besoin d'obtenir "labelType", "shipmentNumber" et plus (note, labelType/END est la chaîne que je recherche comme ci-dessous, ne fait pas partie des données que je veux), comme variables à utiliser et je suis pas sûr de la meilleure façon de le faire. Actuellement, j'ai (simplifié):
Dim port As Int32 = 13000
Dim localAddr As IPAddress = IPAddress.Parse("127.0.0.1")
server = New TcpListener(localAddr, port)
' Start listening for client requests.
server.Start()
' Buffer for reading data
Dim bytes(10240000) As Byte
Dim data As String = Nothing
' Enter the listening loop.
While True
Dim client As TcpClient = server.AcceptTcpClient()
data = Nothing
' Get a stream object for reading and writing
Dim stream As NetworkStream = client.GetStream()
Dim i As Int32
' Loop to receive all the data sent by the client.
i = stream.Read(bytes, 0, bytes.Length)
data = System.Text.Encoding.ASCII.GetString(bytes, 0, 5000)
' >>>> The bit that matters, split the data based on what we know will be there
Dim searchIndex As Integer = data.IndexOf("labelType")
Dim f As String = data.Substring(searchIndex + 1, data.IndexOf("END", searchIndex + 1) - searchIndex - 1)
MessageBox.Show(data)
' >>> Response and Close connection removed to keep question clean
End While
Comme vous pouvez le voir, je je cherche la réponse pour « marqueurs » ou délimiteurs je mets là-dedans; il semble que ce ne sera pas fiable et il devrait y avoir un meilleur moyen. J'ai seen some questions liés, mais ils ne sont pas directly address this, et je ne suis pas sûr si ceux-ci sont même raison. C'est peut-être déjà le meilleur moyen, mais sans demander je ne sais pas.
Quelle méthodologie utiliseriez-vous pour faire cela?
Y a-t-il un meilleur moyen?