与webClient反应,将Bytes []转换为字符串,json

问题描述

我们有一个用SilverLight编写的旧版应用程序。我们想使用基于React的技术并摆脱silverLight项目

当前,webClient是核心处理程序。该webClient在silverlight项目中。为了摆脱silverlight项目,在哪里可以使用OpenreadAsync调用webclient并处理OpenReadCompleted事件。 OpenReadCompleted事件获取数据并对其进行进一步处理。这会在服务器端或UI的控制器中发生吗?请帮我。我很困惑,因为我在使用React和Controller方面的经验并不强。

webclient OpenReadCompletedEvent使用二进制阅读器,并使用此代码收集页面。我不明白为什么开发人员必须做所有这些事情。 开发人员为什么不能只使用 var str = System.Text.Encoding.Default.GetString(bytes);将bytes []转换为字符串?是因为他试图获取页数吗?这些大多数是文本报告。如果由于难以获取页面数而仍要使用此代码,那么该代码在哪里?应该在控制器中吗?我可以在反应中使用二进制阅读器吗?

private Dictionary<int,List<string>> m_Pages = new Dictionary<int,List<string>>();

 StringBuilder RptLine = new StringBuilder();
            char B;
            List<string> Page = new List<string>();
            int PageNumber = _StartingPage - 1;
            int LineNumber = 0;
            int LineFeedForPageEndCntr = 0;
            this.m_Pages.Clear();
            int byteCntr = 0;
            int lineCntr = 0;

            try
            {
                while (true)
                {
                    B = _RptBinaryReader.ReadChar();
                    byteCntr++;
                    
                    switch (B)
                    {
                        case '\r':      // end of line char(13,0Dh)
                            //b = bRead.ReadChar();
                            if (RptLine.Length == 0)
                            {
                                RptLine.Append(" ");
                                LineFeedForPageEndCntr = 0;
                            }
                            lineCntr++;
                            Page.Add(RptLine.ToString());
                            LineNumber++;
                            RptLine.Remove(0,RptLine.Length);


                            break;
                        //case ( char )12:  // end of page char (12,0Ch)
                        case '\f':  // end of page char (12,0Ch)
                            PageNumber++;
                            this.m_Pages.Add(PageNumber,Page);

                            if (PageNumber == _RequestedPage)
                            {
                                //_Worker.ReportProgress( PageNumber,Page );
                                PageData page = new PageData();
                                page.PageLines = Page;
                                page.PageNumber = PageNumber;
                                this.FetchProgressChanged(page);
                            }
                            else
                            {
                                //_Worker.ReportProgress( PageNumber,null );
                                PageData page = new PageData();
                                page.PageLines = null;
                                page.PageNumber = PageNumber;
                                this.FetchProgressChanged(page); 
                            }

                            Page = new List<string>();
                            LineNumber = 0;
                            break;
                        case '\n':  // char (10,0Ah)
                            LineFeedForPageEndCntr++;
                            if (LineFeedForPageEndCntr == 3)
                            {
                                if (_RptBinaryReader.PeekChar() == (char)32)
                                {
                                    B = _RptBinaryReader.ReadChar();
                                }
                                PageNumber++;
                                this.m_Pages.Add(PageNumber,Page);

                                if (PageNumber == _RequestedPage)
                                {
                                    //_Worker.ReportProgress( PageNumber,Page );
                                    PageData page = new PageData();
                                    page.PageLines = Page;
                                    page.PageNumber = PageNumber;
                                    this.FetchProgressChanged(page);
                                }
                                else
                                {
                                    //_Worker.ReportProgress( PageNumber,null );
                                    PageData page = new PageData();
                                    page.PageLines = null;
                                    page.PageNumber = PageNumber;
                                    this.FetchProgressChanged(page);
                                }
                                Page = new List<string>();
                                LineNumber = 0;
                            }
                            break;
                        case (char)26:
                            break;
                        default:
                            if (B != (char)32)
                            {
                                LineFeedForPageEndCntr = 0;
                            
                            }
                          RptLine.Append(B);
                          
                            break;
                    }
                }
            }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...