关于接收json以及使用json

Common:

FileIO.cs

using System;
using System.Collections.Generic;
//using System.Linq;
using System.Web;
using System.IO;
using System.Text;

namespace SMS.Util
{
    #region FileIo
    public class FileIO
    {
        
        private FileStream fsw;
        private StreamWriter sw;
        private string Charset = "UTF-8";

        public FileIO()
        {
        }

        public FileIO(string charset)
        {
            Charset = charset;
        }

        private void CreateDir(string filePath)
        {
            string dirPath = System.IO.Path.GetDirectoryName(filePath);
            if (!Directory.Exists(dirPath))
            {
                Directory.CreateDirectory(dirPath);
            }
        }

        public void OpenWriteFile(string filePath)
        {
            try
            {
                if (!File.Exists(filePath))
                {
                    CreateDir(filePath);
                    File.Create(filePath).Close();
                    fsw = new FileStream(filePath, FileMode.Append, FileAccess.Write, FileShare.ReadWrite);
                    sw = new StreamWriter(fsw, Encoding.GetEncoding(Charset));
                }
                else
                {
                    fsw = new FileStream(filePath, FileMode.Append, FileAccess.Write, FileShare.ReadWrite);
                    sw = new StreamWriter(fsw, Encoding.GetEncoding(Charset));
                }
            }
            catch
            {
            }
        }

        public void CloseWriteFile()
        {
            if (fsw != null)
            {
                fsw.Close();
            }
        }

        public void WriteLine(string s)
        {
            if (sw != null)
            {
                sw.WriteLine(s);
                sw.Flush();
            }
        }

        private FileStream fsr;
        private StreamReader sr;

        public void OpenReadFile(string filePath)
        {
            if (!File.Exists(filePath))
            {
                CreateDir(filePath);
                File.Create(filePath).Close();
            }
            fsr = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Read,
            FileShare.ReadWrite);
            sr = new StreamReader(fsr, Encoding.GetEncoding(Charset));
        }

        public void CloseReadFile()
        {
            if (fsr != null)
                fsr.Close();
        }

        public string ReadLine()
        {
            if (sr.EndOfStream)
                return null;
            return sr.ReadLine();
        }

        public string ReadToEnd()
        {
            if (sr.EndOfStream) { return null; }
            return sr.ReadToEnd();
        }

        public bool IsEof()
        {
            return sr.EndOfStream;
        }
    }//ClassEnd
    #endregion
}

 FileItem.cs

using System;
using System.Collections.Generic;
//using System.Linq;
using System.Text;
using System.IO;

namespace SMS.Util
{
    /// <summary>
    /// 文件元数据。
    /// 可以使用以下几种构造方法:
    /// 本地路径:new FileItem("C:/temp.jpg");
    /// 本地文件:new FileItem(new FileInfo("C:/temp.jpg"));
    /// 字节流:new FileItem("abc.jpg", bytes);
    /// </summary>
    public class FileItem
    {
        private string fileName;
        private string mimeType;
        private byte[] content;
        private FileInfo fileInfo;

        /// <summary>
        /// 基于本地文件的构造器。
        /// </summary>
        /// <param name="fileInfo">本地文件</param>
        public FileItem(FileInfo fileInfo)
        {
            if (fileInfo == null || !fileInfo.Exists)
            {
                throw new ArgumentException("fileInfo is null or not exists!");
            }
            this.fileInfo = fileInfo;
        }

        /// <summary>
        /// 基于本地文件全路径的构造器。
        /// </summary>
        /// <param name="filePath">本地文件全路径</param>
        public FileItem(string filePath)
            : this(new FileInfo(filePath))
        { }

        /// <summary>
        /// 基于文件名和字节流的构造器。
        /// </summary>
        /// <param name="fileName">文件名称(服务端持久化字节流到磁盘时的文件名)</param>
        /// <param name="content">文件字节流</param>
        public FileItem(string fileName, byte[] content)
        {
            if (string.IsNullOrEmpty(fileName)) throw new ArgumentNullException("fileName");
            if (content == null || content.Length == 0) throw new ArgumentNullException("content");

            this.fileName = fileName;
            this.content = content;
        }

        /// <summary>
        /// 基于文件名、字节流和媒体类型的构造器。
        /// </summary>
        /// <param name="fileName">文件名(服务端持久化字节流到磁盘时的文件名)</param>
        /// <param name="content">文件字节流</param>
        /// <param name="mimeType">媒体类型</param>
        public FileItem(string fileName, byte[] content, string mimeType)
            : this(fileName, content)
        {
            if (string.IsNullOrEmpty(mimeType)) throw new ArgumentNullException("mimeType");
            this.mimeType = mimeType;
        }

        public string GetFileName()
        {
            if (this.fileName == null && this.fileInfo != null && this.fileInfo.Exists)
            {
                this.fileName = this.fileInfo.FullName;
            }
            return this.fileName;
        }

        public string GetMimeType()
        {
            if (this.mimeType == null)
            {
                this.mimeType = GetMimeType(GetContent());
            }
            return this.mimeType;
        }

        /// <summary>
        /// 获取文件的真实后缀名。目前只支持JPG, GIF, PNG, BMP四种图片文件。
        /// </summary>
        /// <param name="fileData">文件字节流</param>
        /// <returns>JPG, GIF, PNG or null</returns>
        public static string GetFileSuffix(byte[] fileData)
        {
            if (fileData == null || fileData.Length < 10)
            {
                return null;
            }

            if (fileData[0] == 'G' && fileData[1] == 'I' && fileData[2] == 'F')
            {
                return "GIF";
            }
            else if (fileData[1] == 'P' && fileData[2] == 'N' && fileData[3] == 'G')
            {
                return "PNG";
            }
            else if (fileData[6] == 'J' && fileData[7] == 'F' && fileData[8] == 'I' && fileData[9] == 'F')
            {
                return "JPG";
            }
            else if (fileData[0] == 'B' && fileData[1] == 'M')
            {
                return "BMP";
            }
            else
            {
                return null;
            }
        }

        /// <summary>
        /// 获取文件的真实媒体类型。目前只支持JPG, GIF, PNG, BMP四种图片文件。
        /// </summary>
        /// <param name="fileData">文件字节流</param>
        /// <returns>媒体类型</returns>
        public static string GetMimeType(byte[] fileData)
        {
            string suffix = GetFileSuffix(fileData);
            string mimeType;

            switch (suffix)
            {
                case "JPG": mimeType = "image/jpeg"; break;
                case "GIF": mimeType = "image/gif"; break;
                case "PNG": mimeType = "image/png"; break;
                case "BMP": mimeType = "image/bmp"; break;
                default: mimeType = "application/octet-stream"; break;
            }

            return mimeType;
        }

        /// <summary>
        /// 根据文件后缀名获取文件的媒体类型。
        /// </summary>
        /// <param name="fileName">带后缀的文件名或文件全名</param>
        /// <returns>媒体类型</returns>
        public static string GetMimeType(string fileName)
        {
            string mimeType;
            fileName = fileName.ToLower();

            if (fileName.EndsWith(".bmp", StringComparison.CurrentCulture))
            {
                mimeType = "image/bmp";
            }
            else if (fileName.EndsWith(".gif", StringComparison.CurrentCulture))
            {
                mimeType = "image/gif";
            }
            else if (fileName.EndsWith(".jpg", StringComparison.CurrentCulture) || fileName.EndsWith(".jpeg", StringComparison.CurrentCulture))
            {
                mimeType = "image/jpeg";
            }
            else if (fileName.EndsWith(".png", StringComparison.CurrentCulture))
            {
                mimeType = "image/png";
            }
            else
            {
                mimeType = "application/octet-stream";
            }

            return mimeType;
        }

        public byte[] GetContent()
        {
            if (this.content == null && this.fileInfo != null && this.fileInfo.Exists)
            {
                using (System.IO.Stream fileStream = this.fileInfo.OpenRead())
                {
                    this.content = new byte[fileStream.Length];
                    fileStream.Read(content, 0, content.Length);
                }
            }

            return this.content;
        }
    }
}

 Logger.cs

using System;
using System.Collections.Generic;
//using System.Linq;
using System.Web;

namespace SMS.Util
{
    public class Logger
    {
        #region 写文本日志

        /// <summary>
        /// 写文本日志
        /// </summary>
        /// <param name="Content"></param>
        /// <param name="logFilePath"></param>
        public static void WriteTxtLog(string Content, string logFilePath)
        {
            try
            {
                string fileName = logFilePath;
                string br = "\r\n";
                string content = Content;
                FileIO fIO = new FileIO();
                fIO.OpenWriteFile(fileName);
                fIO.WriteLine(content + br + br + "*******************************************************" + br);
                fIO.CloseWriteFile();
            }
            catch
            {
            }
        }

        /// <summary>
        /// 写文本日志
        /// </summary>
        /// <param name="Content"></param>
        public static void WriteTxtLog(string Content)
        {
            try
            {
                string fileName = System.AppDomain.CurrentDomain.BaseDirectory;
                if (!fileName.EndsWith("\\"))
                {
                    fileName += "\\";
                }
                fileName += "Log\\";
                fileName += System.DateTime.Now.ToString("yyyy-MM-dd-HH") + ".txt";
                string br = "\r\n";
                string content = Content;
                FileIO fIO = new FileIO();
                fIO.OpenWriteFile(fileName);
                fIO.WriteLine(content + br + br + "*******************************************************" + br);
                fIO.CloseWriteFile();
            }
            catch
            {
            }
        }

        /// <summary>
        /// 写文本日志
        /// </summary>
        /// <param name="Ex"></param>
        public static void WriteTxtLog(Exception Ex)
        {
            try
            {
                string fileName = System.AppDomain.CurrentDomain.BaseDirectory;
                if (!fileName.EndsWith("\\"))
                {
                    fileName += "\\";
                }
                fileName += "Log\\";
                fileName += System.DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
                string blank = "    ";
                string br = "\r\n";
                string content = string.Empty;
                //content += "客户端IP:" + ClientIP;
                //content += br + "客户端操作系统:" + ClientPlatform;
                //content += br + "客户端浏览器:" + ClientBrowser;
                //content += br + "服务器计算机名:" + System.Net.Dns.GetHostName();
                //content += br + "发生时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                //content += br + "引发页面:" + System.Web.HttpContext.Current.Request.Url.ToString();
                //content += br + "异常对象:" + Ex.Source;
                //content += br + "异常信息:" + Ex.Message;
                //content += br + "异常方法:" + Ex.TargetSite;
                //content += br + "错误详细信息:";
                content += br + blank + Ex.ToString();
                FileIO fIO = new FileIO();
                fIO.OpenWriteFile(fileName);
                fIO.WriteLine(content + br + br + "*******************************************************" + br);
                fIO.CloseWriteFile();
            }
            catch
            {
            }
        }
        #endregion

        #region 客户端IP
        /// <summary>
        /// 客户端IP
        /// </summary>
        private static string ClientIP
        {
            get
            {
                string result = String.Empty;
                result = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
                if (null == result || result == String.Empty)
                {
                    result = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
                }
                if (null == result || result == String.Empty)
                {
                    result = System.Web.HttpContext.Current.Request.UserHostAddress;
                }
                if (null == result || result == String.Empty)
                {
                    return "0.0.0.0";
                }
                return result;
            }
        }
        #endregion

        #region 客户端使用平台的名字
        /// <summary>
        /// 客户端使用平台的名字 
        /// </summary>
        private static string ClientPlatform
        {
            get
            {
                try
                {
                    return System.Web.HttpContext.Current.Request.Browser.Platform.ToString();
                }
                catch { }
                {
                    return "";
                }
            }
        }
        #endregion

        #region 客户端浏览器
        /// <summary>
        /// 客户端浏览器
        /// </summary>
        private static string ClientBrowser
        {
            get
            {
                try
                {
                    System.Web.HttpBrowserCapabilities bc = System.Web.HttpContext.Current.Request.Browser;
                    return bc.Browser + " v." + bc.Version;
                }
                catch
                {
                    return "";
                }
            }
        }
        #endregion
    }//ClassEnd
}

 Tools.cs

/*
 * 微信公众平台C#版SDK
 * www.qq8384.com 版权所有
 * 有任何疑问,请到官方网站:www.qq8484.com查看帮助文档
 * 您也可以联系QQ1397868397咨询
 * QQ群:124987242、191726276、234683801、273640175、234684104
*/
using System;
using System.Collections.Generic;
//using System.Linq;
using System.Text;
//using System.Web.Script.Serialization;
using System.Xml;

namespace Weixin.Mp.Sdk.Util
{
    /// <summary>
    /// 辅助工具类
    /// </summary>
    public  class Tools
    {
        #region 获取Json string某节点的值。
        /// <summary>
        /// 获取Json string某节点的值。
        /// </summary>
        /// <param name="json"></param>
        /// <param name="key"></param>
        /// <returns></returns>
        public static string GetJosnValue(string jsonStr, string key)
        {
            string result = string.Empty;
            if (!string.IsNullOrEmpty(jsonStr))
            {
                key = "\"" + key.Trim('"') + "\"";
                int index = jsonStr.IndexOf(key) + key.Length + 1;
                if (index > key.Length + 1)
                {
                    //先截逗号,若是最后一个,截“}”号,取最小值

                    int end = jsonStr.IndexOf(',', index);
                    if (end == -1)
                    {
                        end = jsonStr.IndexOf('}', index);
                    }
                    //index = json.IndexOf('"', index + key.Length + 1) + 1;
                    result = jsonStr.Substring(index, end - index);
                    //过滤引号或空格
                    result = result.Trim(new char[] { '"', ' ', '\'' });
                }
            }
            return result;
        }
        #endregion

        /// <summary>
        /// datetime转换成unixtime
        /// </summary>
        /// <param name="time"></param>
        /// <returns></returns>
        public static  long  ConvertDateTimeInt(System.DateTime time)
        {
            System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
            return (long )(time - startTime).TotalSeconds;
        }

       /// <summary>
        /// 将Unix时间戳转换为DateTime类型时间
       /// </summary>
       /// <param name="d"></param>
       /// <returns></returns>
        public static System.DateTime ConvertIntDateTime(double d)
        {
            System.DateTime time = System.DateTime.MinValue;
            System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
            time = startTime.AddSeconds(d);
            return time;
        }

        /// <summary>
        /// Json序列化对象
        /// </summary>
        /// <typeparam name="ObjType"></typeparam>
        /// <param name="obj"></param>
        /// <returns></returns>
        //public static  string ToJsonString<ObjType>(ObjType obj) where ObjType : class
        //{
        //    //JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
        //    //string  s = jsonSerializer.Serialize(obj);
        //    //return s;
        //}

        //操作xml
       // public

    }
}

 WebUtils.cs

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;
using System.Web;
using System.Net.Security;
using System.Security.Authentication;
using System.Security.Cryptography.X509Certificates;

namespace SMS.Util
{
    /// <summary>
    /// 网络工具类。
    /// </summary>
    public sealed class WebUtils
    {
        private int _timeout = 100000;

        /// <summary>
        /// 请求与响应的超时时间
        /// </summary>
        public int Timeout
        {
            get { return this._timeout; }
            set { this._timeout = value; }
        }

        /// <summary>
        /// 执行HTTP POST请求。
        /// </summary>
        /// <param name="url">请求地址</param>
        /// <param name="postData">post数据</param>
        /// <returns>HTTP响应</returns>
        public string DoPost(string url, string postData)
        {
            HttpWebRequest req = GetWebRequest(url, "POST");
            req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";

            byte[] bytePostData = Encoding.UTF8.GetBytes(postData);
            System.IO.Stream reqStream = req.GetRequestStream();
            reqStream.Write(bytePostData, 0, bytePostData.Length);
            reqStream.Close();

            HttpWebResponse rsp = (HttpWebResponse)req.GetResponse();
            if (string.IsNullOrEmpty(rsp.CharacterSet))
            {
                return GetResponseAsString(rsp, Encoding.UTF8);
            }
            else
            {
                Encoding encoding = Encoding.GetEncoding(rsp.CharacterSet);
                return GetResponseAsString(rsp, encoding);
            }
        }

        /// <summary>
        /// 执行HTTP POST请求。
        /// </summary>
        /// <param name="url">请求地址</param>
        /// <param name="parameters">请求参数</param>
        /// <returns>HTTP响应</returns>
        public string DoPost(string url, IDictionary<string, string> parameters)
        {
            HttpWebRequest req = GetWebRequest(url, "POST");
            req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";

            byte[] postData = Encoding.UTF8.GetBytes(BuildQuery(parameters));
            System.IO.Stream reqStream = req.GetRequestStream();
            reqStream.Write(postData, 0, postData.Length);
            reqStream.Close();

            HttpWebResponse rsp = (HttpWebResponse)req.GetResponse();
            if (string.IsNullOrEmpty(rsp.CharacterSet))
            {
                return GetResponseAsString(rsp, Encoding.UTF8);
            }
            else
            {
                Encoding encoding = Encoding.GetEncoding(rsp.CharacterSet);
                return GetResponseAsString(rsp, encoding);
            }
        }

        /// <summary>
        /// 执行HTTP GET请求。
        /// </summary>
        /// <param name="url">请求地址</param>
        /// <param name="parameters">请求参数</param>
        /// <returns>HTTP响应</returns>
        public string DoGet(string url, IDictionary<string, string> parameters)
        {
            if (parameters != null && parameters.Count > 0)
            {
                if (url.Contains("?"))
                {
                    url = url + "&" + BuildQuery(parameters);
                }
                else
                {
                    url = url + "?" + BuildQuery(parameters);
                }
            }
           // writeBin("-------------------------第二次读取url:" + url);
            HttpWebRequest req = GetWebRequest(url, "GET");
          //  writeBin("-------------------------11"+req);
            req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";
//
          //  writeBin("-------------------------22" + req);
            if (req != null)
            {
              //  writeBin("--------------------req不为空---------------");
                //writeBin(req.ToString());
            }
            else
            {
               // writeBin("------------------req为空了-------");
               // writeBin(req.ToString());
            }
            HttpWebResponse rsp = (HttpWebResponse)req.GetResponse();
            //writeBin("-------------------------33");
            if (string.IsNullOrEmpty(rsp.CharacterSet))
            {
                //writeBin("-------------------------repSet为空:"+rsp);
                return GetResponseAsString(rsp, Encoding.UTF8);
            }
            else
            {
                //writeBin("-------------------------repSetNo空:"+rsp.CharacterSet);
                Encoding encoding = Encoding.GetEncoding(rsp.CharacterSet);
                return GetResponseAsString(rsp, encoding);
            }
        }

        public void writeBin(string texts)
        {
            //获取路径
            string LoginPath = AppDomain.CurrentDomain.BaseDirectory + "\\AsyncMemberinfo.bin";
            //服务器一切正常
            FileStream fs = new FileStream(LoginPath, FileMode.Append);
            StringBuilder sbu = new StringBuilder();
            sbu.AppendLine(texts);
            BinaryWriter bwrite = new BinaryWriter(fs, System.Text.Encoding.Default);
            bwrite.Write(sbu.ToString());
            bwrite.Flush();
            fs.Close();
        }

        /// <summary>
        /// 执行带文件上传的HTTP POST请求。
        /// </summary>
        /// <param name="url">请求地址</param>
        /// <param name="textParams">请求文本参数</param>
        /// <param name="fileParams">请求文件参数</param>
        /// <returns>HTTP响应</returns>
        public string DoPost(string url, IDictionary<string, string> textParams, IDictionary<string, FileItem> fileParams)
        {
            // 如果没有文件参数,则走普通POST请求
            if (fileParams == null || fileParams.Count == 0)
            {
                return DoPost(url, textParams);
            }

            string boundary = DateTime.Now.Ticks.ToString("X"); // 随机分隔线

            HttpWebRequest req = GetWebRequest(url, "POST");
            req.ContentType = "multipart/form-data;charset=utf-8;boundary=" + boundary;

            System.IO.Stream reqStream = req.GetRequestStream();
            byte[] itemBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "\r\n");
            byte[] endBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");

            // 组装文本请求参数
            string textTemplate = "Content-Disposition:form-data;name=\"{0}\"\r\nContent-Type:text/plain\r\n\r\n{1}";
            IEnumerator<KeyValuePair<string, string>> textEnum = textParams.GetEnumerator();
            while (textEnum.MoveNext())
            {
                string textEntry = string.Format(textTemplate, textEnum.Current.Key, textEnum.Current.Value);
                byte[] itemBytes = Encoding.UTF8.GetBytes(textEntry);
                reqStream.Write(itemBoundaryBytes, 0, itemBoundaryBytes.Length);
                reqStream.Write(itemBytes, 0, itemBytes.Length);
            }

            // 组装文件请求参数
            string fileTemplate = "Content-Disposition:form-data;name=\"{0}\";filename=\"{1}\"\r\nContent-Type:{2}\r\n\r\n";
            IEnumerator<KeyValuePair<string, FileItem>> fileEnum = fileParams.GetEnumerator();
            while (fileEnum.MoveNext())
            {
                string key = fileEnum.Current.Key;
                FileItem fileItem = fileEnum.Current.Value;
                string fileEntry = string.Format(fileTemplate, key, fileItem.GetFileName(), fileItem.GetMimeType());
                byte[] itemBytes = Encoding.UTF8.GetBytes(fileEntry);
                reqStream.Write(itemBoundaryBytes, 0, itemBoundaryBytes.Length);
                reqStream.Write(itemBytes, 0, itemBytes.Length);

                byte[] fileBytes = fileItem.GetContent();
                reqStream.Write(fileBytes, 0, fileBytes.Length);
            }

            reqStream.Write(endBoundaryBytes, 0, endBoundaryBytes.Length);
            reqStream.Close();

            HttpWebResponse rsp = (HttpWebResponse)req.GetResponse();
            Encoding encoding = Encoding.GetEncoding(rsp.CharacterSet);
            return GetResponseAsString(rsp, encoding);
        }

        public bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
        { //直接确认,否则打不开
            //writeBin("进入内部服务器");
         //   writeBin("内部分析器:" + sender + "X509Certificate:" + certificate + "X509Chain:" + chain + "SslPolicyErrors:" + errors);
            return true;
        }

      

        public HttpWebRequest GetWebRequest(string url, string method)
        {
            HttpWebRequest req = null;
            if (url.Contains("https"))
            {
                ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
                req = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url));
            }                     
            else
            {
                req = (HttpWebRequest)WebRequest.Create(url);
            }

            req.ServicePoint.Expect100Continue = false;
            req.Method = method;
            req.KeepAlive = true;
            req.UserAgent = "WeixinMpSdk";
            req.Timeout = this._timeout;

            return req;
        }

        /// <summary>
        /// 把响应流转换为文本。
        /// </summary>
        /// <param name="rsp">响应流对象</param>
        /// <param name="encoding">编码方式</param>
        /// <returns>响应文本</returns>
        public string GetResponseAsString(HttpWebResponse rsp, Encoding encoding)
        {
            System.IO.Stream stream = null;
            StreamReader reader = null;

            try
            {
                // 以字符流的方式读取HTTP响应
                stream = rsp.GetResponseStream();
                reader = new StreamReader(stream, encoding);
                return reader.ReadToEnd();
            }
            finally
            {
                // 释放资源
                if (reader != null) reader.Close();
                if (stream != null) stream.Close();
                if (rsp != null) rsp.Close();
            }
        }

        /// <summary>
        /// 组装GET请求URL。
        /// </summary>
        /// <param name="url">请求地址</param>
        /// <param name="parameters">请求参数</param>
        /// <returns>带参数的GET请求URL</returns>
        public string BuildGetUrl(string url, IDictionary<string, string> parameters)
        {
            if (parameters != null && parameters.Count > 0)
            {
                if (url.Contains("?"))
                {
                    url = url + "&" + BuildQuery(parameters);
                }
                else
                {
                    url = url + "?" + BuildQuery(parameters);
                }
            }
            return url;
        }

        /// <summary>
        /// 组装普通文本请求参数。
        /// </summary>
        /// <param name="parameters">Key-Value形式请求参数字典</param>
        /// <returns>URL编码后的请求数据</returns>
        public static string BuildQuery(IDictionary<string, string> parameters)
        {
            StringBuilder postData = new StringBuilder();
            bool hasParam = false;

            IEnumerator<KeyValuePair<string, string>> dem = parameters.GetEnumerator();
            while (dem.MoveNext())
            {
                string name = dem.Current.Key;
                string value = dem.Current.Value;
                // 忽略参数名或参数值为空的参数
                if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(value))
                {
                    if (hasParam)
                    {
                        postData.Append("&");
                    }

                    postData.Append(name);
                    postData.Append("=");
                    postData.Append(HttpUtility.UrlEncode(value, Encoding.UTF8));
                    hasParam = true;
                }
            }

            return postData.ToString();
        }

        private static bool  DownloadQrCode(string url, string saveDir, out string saveFileName, out string errHtml)
        {
            Stream outStream = null;
            WebClient wc = null;
            errHtml = string.Empty;
            if (!saveDir.EndsWith("\\"))
            {
                saveDir += "\\";
            }
            saveFileName = saveDir + System.Guid.NewGuid().ToString() + ".jpg";
            try
            {


                wc = new WebClient();
                var data = wc.DownloadData(url);



                if (File.Exists(saveFileName))
                    File.Delete(saveFileName);
                outStream = System.IO.File.Create(saveFileName);

                foreach (var b in data)
                {
                    outStream.WriteByte(b);
                }
                return true;
            }
            catch (Exception ex)
            {
                errHtml = ex.Message;
                return false;
            }
            finally
            {
                if (wc != null)
                {
                    wc.Dispose();
                }
                if (outStream != null)
                {
                    outStream.Close();
                }
            }
        }


        public bool DownloadFile(string url, string saveDir, out string saveFileName,out string errHtml)
        {
            if (url.IndexOf("showqrcode") != -1)
            {
                return DownloadQrCode(url, saveDir, out  saveFileName, out  errHtml);
            }

            saveFileName = string.Empty;
            errHtml = string.Empty;
            bool isSuc = false;
            HttpWebResponse  response = null;
            HttpWebRequest request = null;

            try
            {

                request = GetWebRequest(url, "GET");
               // if (url.IndexOf("showqrcode") != -1)
                //{
                //    request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0";
                //}

                response = (HttpWebResponse)request.GetResponse();
                if (!response.ContentType.ToLower().StartsWith("text/"))
                {
                    string disp = response.Headers.Get("Content-disposition");
                    string ext = disp.Substring(disp.LastIndexOf("."));
                    ext = ext.Substring(0, ext.Length - 1);
                    saveFileName = saveDir;
                    if (!saveFileName.EndsWith("\\"))
                    {
                        saveFileName += "\\";
                    }
                    saveFileName = saveFileName + System.Guid.NewGuid().ToString() + ext;
                    SaveBinaryFile(response, saveFileName);
                    isSuc = true;
                }
                else
                {
                    if (string.IsNullOrEmpty(response.CharacterSet))
                    {
                        errHtml = GetResponseAsString(response, Encoding.UTF8);
                    }
                    else
                    {
                        Encoding encoding = Encoding.GetEncoding(response.CharacterSet);
                        errHtml = GetResponseAsString(response, encoding);
                    }
                    isSuc = false;
                }
            }
            finally
            {
                if (response != null)
                {
                    response.Close();
                }
                if (request != null)
                {
                    request = null;
                }
            }


            return isSuc;
        }

        // 将二进制文件保存到磁盘
        private static bool SaveBinaryFile(WebResponse response, string FileName)
        {
            bool Value = true;
            byte[] buffer = new byte[1024];

            try
            {
                if (File.Exists(FileName))
                    File.Delete(FileName);
                Stream outStream = System.IO.File.Create(FileName);
                Stream inStream = response.GetResponseStream();

                int l;
                do
                {
                    l = inStream.Read(buffer, 0, buffer.Length);
                    if (l > 0)
                        outStream.Write(buffer, 0, l);
                }
                while (l > 0);

                outStream.Close();
                inStream.Close();
            }
            catch
            {
                Value = false;
            }
            return Value;
        }

    } //class end
}

 JsonTest.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Newtonsoft.Json;

namespace WebTest.Common
{
    public class JsonTest<T> where T:new()
    {
        public static T jsonToOrder(string jsons)
        {
            T t = JsonConvert.DeserializeObject<T>(jsons);
            return t;
        }
    }
}

 TestDemo1.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestDemo1.aspx.cs" Inherits="WebTest.TestDemo1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <input id="userToken" type="text" runat="server" />
       <%-- <input id="submitOK" type="button" onclick="return subAsync();">--%>
        <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
    </div>
    </form>
</body>
</html>


<script type="text/javascript">

    function subAsync() {
        var userMes = $("#userToken").val();

        $.ajax({
            url: "http://member.joycp.com/ajax/takemoney.ashx?requestType=1&j_token=" + userMes,
            type: "get",
            async: false,
            dataType:"jsonp",
            success: function (data) {
                if (data != "") {
                    alert(data);
                } else {
                    alert("数据为空了");
                }
            },
            error: function () {
                alert("出错了!");
            }
        });
    }

</script>

 TestDemo1.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using WebTest.Common;

namespace WebTest
{
    public partial class TestDemo1 : System.Web.UI.Page
    {
        private string myTooken = "";
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            myTooken += this.userToken.Value;
            SMS.Util.WebUtils uti = new SMS.Util.WebUtils();
            string s = uti.DoGet(myTooken, null);
            newModel mode =  JsonTest<newModel>.jsonToOrder(s);
            Response.Write("状态:" + mode.Stat + "||消息:" + mode.Msg + "||时间:" + mode.Data);
        }

    }
    public class newModel
    {
        public int Stat { get; set; }
        public string Msg { get; set; }
        public string Data { get; set; }
    }
    
}

 

posted @ 2014-12-09 17:27  临冰听雪丶  阅读(1764)  评论(1编辑  收藏  举报