• Wcf Rest Service模板方法输入输出流数据


            [WebInvoke(UriTemplate = "Qry?msg={xml}", Method = "POST")]
            public Stream SearchQry(string xml, Stream request)
            {
                WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml";
               
                //将流转换为字符串
                string requestData = new ParseUtil().StreamToString(request);               
    
                //将字符串转换为流
                return new ParseUtil().StringToStream(responseData);
            }
            
            
             /// <summary>
            /// 将流数据转换成字符串
            /// </summary>
            /// <param name="stream"></param>
            /// <returns></returns>
            public string StreamToString(Stream stream)
            {
                string strData = string.Empty;
    
                try
                {
                    byte[] bytes = streamToByteArray(stream);
                    strData = Encoding.UTF8.GetString(bytes);               //以字符串表示的流数据
                }
                catch (Exception ex)
                {
                    System.Diagnostics.StackFrame stackFrame = new System.Diagnostics.StackFrame();
                    System.Reflection.MethodBase methodBase = stackFrame.GetMethod();
                    LogUtil.LogException("方法:" + methodBase.ToString() + "\t异常信息:" + ex.Message + "\t【将流数据转换成字符串】方法发生错误");
                }
                return strData;
            }
            
            /// <summary>
            /// 将流数据转换成字节数组
            /// </summary>
            /// <param name="stream"></param>
            /// <returns></returns>
            private byte[] streamToByteArray(Stream stream)
            {
                byte[] buffer = new byte[32768];
    
                byte[] bytesReturn = null;
                using (MemoryStream ms = new MemoryStream())
                {
                    while (true)
                    {
                        int read = stream.Read(buffer, 0, buffer.Length);
                        if (read <= 0) //无数据时跳出循环
                        {
                            break;
                        }
                        ms.Write(buffer, 0, read);
                    }
    
                    bytesReturn = ms.ToArray();
                }
                stream.Close();
    
                return bytesReturn;
            }
            
            
             /// <summary>
            /// 将字符串转换成流
            /// </summary>
            /// <param name="stream"></param>
            /// <returns></returns>
            public Stream StringToStream(string xml)
            {
                try
                { 
                    xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n" + xml.Replace("\r\n", "").Replace(" ", "");
                    byte[] buffer = System.Text.Encoding.UTF8.GetBytes(xml);
                    Stream st = new MemoryStream(buffer);
                    st.Flush();
                    st.Position = 0;
    
                    return st;
                }
                catch (Exception ex)
                {
                    System.Diagnostics.StackFrame stackFrame = new System.Diagnostics.StackFrame();
                    System.Reflection.MethodBase methodBase = stackFrame.GetMethod();
                    LogUtil.LogException("方法:" + methodBase.ToString() + "\t异常信息:" + ex.Message + "\t【将字符串转换成流】方法发生错误");
                    return null;
                }
            }
  • 相关阅读:
    洛谷 P1786 帮贡排序 题解
    Bayes++ Library入门学习之熟悉UKF相关类
    Bayes++ Library入门学习之熟悉class-Bayesian_filter_base(2)
    Bayes++ Library入门学习之熟悉class-Importance_resampler
    Bayes++ Library入门学习之熟悉class-Bayesian_filter_base(1)
    Bayes++ Library入门学习之熟悉namespace
    CMake入门之创建一个基于PCL的最小工程
    CUDA学习之从CPU架构说起
    #pragma 预处理指令详解
    C++中inline函数
  • 原文地址:https://www.cnblogs.com/gossip/p/2466561.html
Copyright © 2020-2023  润新知