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); }