Exemple #1
0
        public async Task <IActionResult> TestSendReceive([FromBody] XmlPageRequestBody xmlPageRequestBody)
        {
            ILogger              logger = new ConsoleLogger();
            JsonResult           jsonResult;
            RequestResponseFrame responseFrame;
            object jsonObject;

            string methodName = "TestSendReceive";

            logger.WriteEntry(methodName + " entry.");

            if (ModelState.IsValid)
            {
                logger.WriteEntry(methodName + " ModelState is valid.");

                string receiveUrl    = xmlPageRequestBody.ReceiveUrl;
                string receiveSearch = xmlPageRequestBody.ReceiveSearch;

                GeneralClassLibrary.XmlPageRequestFrame xmlPageRequestFrame = new XmlPageRequestFrame(xmlPageRequestBody);

                //	Transform the API request to an ITcpFrame.
                byte[] sendFrameBytes             = xmlPageRequestFrame.ToByteArray();
                RequestResponseFrame requestFrame = new RequestResponseFrame(sendFrameBytes);

                //	Connect to the server and obtain a network stream.
                BufferedStream bufferedStream = await SendReceiveReply.ConnectToServer(RemoteHostName, RemotePortNumber, SizeStreamBuffer, logger);

                //	Send and receive data via the stream.
                responseFrame = await SendReceiveReply.RequestReceiveResponse(bufferedStream, requestFrame, logger);

                ITcpFrame tcpFrame        = responseFrame;
                byte[]    replyFrameBytes = tcpFrame.FramePacket;

                IpcFrameBase ipcFrameBase = ( IpcFrameBase )IpcFrameBase.FromByteArray(replyFrameBytes);

                //	Transform the ITcpFrame to an API response.
                logger.WriteEntry(methodName + " building the JSON result.");
                XmlPageReplyFrame xmlPageReplyFrame = ( XmlPageReplyFrame )ipcFrameBase;
                jsonObject = new
                {
                    textArray = xmlPageReplyFrame.ResultList,
                    isSuccess = true
                };
            }
            else
            {
                logger.WriteEntry(methodName + " ModelState is not valid!");
                jsonObject = new
                {
                    textArray = new List <string>(),
                    isSuccess = false
                };
            }

            logger.WriteEntry(methodName + " exit.");

            jsonResult = new JsonResult(jsonObject);
            return(jsonResult);
        }
        public ITcpFrame BuildResponse(BrowserForm browserForm)
        {
            XmlPageRequestBody  xmlPageRequestBody;
            XmlPageRequestFrame xmlPageRequestFrame;

            xmlPageRequestFrame = XmlPageRequestFrame;
            xmlPageRequestBody  = xmlPageRequestFrame.XmlPageRequestBody;

            RequestResponseFrame responseFrame;

            NavigateAndSync(browserForm, xmlPageRequestBody);
            //string search = xmlPageRequestBody.ReceiveSearch;

            //	Wait until all navigation results are completed.
            BrowserDocument browserDocument = browserForm.BrowserDocument;

            browserDocument.NavigateManualResetEvent.WaitOne();

            //	Get the results of navigation
            string domText = browserDocument.DomText;
            string xmlText = browserDocument.XmlText;

            List <string> textList = new List <string>
            {
                domText,
                xmlText,
                browserDocument.DomContentOnly(),
                browserDocument.XmlContentOnly()
            };

            //	Frame the results.
            XmlPageReplyFrame xmlPageReplyFrame = new XmlPageReplyFrame(textList);

            responseFrame = new RequestResponseFrame(xmlPageReplyFrame.ToByteArray());

            //	Navigate to a blank page so the pool of browsers remains quiet.
            NavigateToBlank(browserForm);

            return(responseFrame);
        }