基本的な印刷クライアントがあり、Ajaxを使用してWebから送信された接続を待ち受けます。以上送信され、いくつかのvairables、コンテキストの例jQueryのリクエストがあります127.0.0.1:13000接続:キープアライブ たContentTcpListenerがPOSTレスポンス変数を処理します
$.ajax({
url : 'http://127.0.0.1:13000',
type : 'POST',
data : {
'shipmentNumber': 'SAMPLESN998SSkLAIS',
'labelType': 'labelTypePostageEND',
'pdfLabel': 'pdfLabel__'
}
これは
POST/HTTP/1.1ホストと見られています長さ:70621受け入れ:/原産地:nullユーザエージェント:Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36(GeckoのようなKHTML) Chrome/59.0.3071.109 Safari/537.36コンテンツタイプ: アプリケーション/ x-www-form-urlencoded;文字セット= UTF-8エンコーディングを受け入れ: GZIPを収縮、BR-言語を受け入れ:EN-GB、EN-US; Q = 0.8、EN; Q = 0.6 shipmentNumber = SAMPLESN998SSkLAIS & labelType = labelTypeRoyalMailEND & pdfLabel =
私は最終的に "labelType"、 "shipmentNumber"などを取得する必要があります(labelType/ENDは使用するデータの一部ではなく、以下に示すように検索した文字列です)。これを行う最善の方法は不明です。現在、私は(簡体字)があります。
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
あなたは私は私がそこに入れて、「マーカー」または区切り文字のための応答を検索する見ることができるように。それは信頼できず、より良い方法があるはずだと感じます。私はseen some questionsを持っていますが、彼らはdirectly address thisではありません。これはすでに最良の方法かもしれませんが、私には分かりません。
これを行うにはどのような方法が必要ですか?
良い方法がありますか?