zoukankan      html  css  js  c++  java
  • C# 的post应用!!!

    这学期在学彩信短信wapIVR开发,怎么说呢,我个人感觉就是两个字:坑爹!

    彩信上了7周实验课,但是呢,不是很感兴趣。让我郁闷的一件事就是我学的.NET方向,彩信那一块全部要用java搞,MY God,拿块豆腐砸死我吧,但是我呢又不想用java写,java都能写,C#也肯定能写,所以就花了一天时间研究了一下!

    还好前段时间搞了一下android,对java勉勉强强看得懂,但是要实际开发还是比较难的。今天上午听**公司老总关于当前大学生就业的一些建议,特别是搞IT行业的,自我感觉还是要好好抓一下基础。悲催。

    好了废话不多说了,进入正题。

    post方法就是通过客户端的方式登录网页做些事情,摆脱浏览器(我是这样理解的,不知道对错,最近心情不太好,很是郁闷,自己去查吧),当然能做很多很多事情,这个自己去查。

    好吧,直接上代码,基本上有注释:

      1 using System;
      2 using System.Collections.Generic;
      3 using System.ComponentModel;
      4 using System.Data;
      5 using System.Drawing;
      6 using System.Linq;
      7 using System.Text;
      8 using System.Windows.Forms;
      9 using System.IO;
     10 using System.Collections.Specialized;
     11 using System.Net;
     12 using ICSharpCode.SharpZipLib.Zip;
     13 
     14 namespace MMSSend
     15 {
     16     public partial class Form1 : Form
     17     {
     18         private static string mmspath = null;
     19         private static string imagepath = null;
     20         private static string phone = null;
     21         public Form1()
     22         {
     23             InitializeComponent();
     24             send.Enabled = false;
     25         }
     26 
     27         /// <summary>
     28         /// 发送短信
     29         /// </summary>
     30         /// <param name="sender"></param>
     31         /// <param name="e"></param>
     32         private void send_Click(object sender, EventArgs e)
     33         {
     34             phone = txt_phone.Text;
     35             try
     36             {
     37                 mySubmit(ReadZIPContent());
     38                 MessageBox.Show("发送成功!!!");
     39             }
     40             catch (Exception ex)
     41             {
     42                 MessageBox.Show("发送失败!" + ex.ToString());
     43             }
     44 
     45         }
     46         /// <summary>
     47         /// 添加图片
     48         /// </summary>
     49         /// <param name="sender"></param>
     50         /// <param name="e"></param>
     51         private void addimage_Click(object sender, EventArgs e)
     52         {
     53             OpenFileDialog openFileDialog = new OpenFileDialog();//打开一个对话框
     54             openFileDialog.InitialDirectory = "c:\\";
     55             openFileDialog.Filter = "所有文件|*.*";
     56             openFileDialog.RestoreDirectory = true;
     57             openFileDialog.FilterIndex = 1;
     58             if (openFileDialog.ShowDialog() == DialogResult.OK)
     59             {
     60                 string fname = openFileDialog.FileName;//得到文件路径
     61                 imagepath = fname;
     62                 FileStream file = new FileStream(fname, FileMode.Open, FileAccess.Read);//filestream流,主要用于将图片显示出来;
     63                 Bitmap picture = new Bitmap(file);
     64                 pictureBox1.Image = picture;
     65 
     66             }
     67         }
     68         /// <summary>
     69         /// 保存图片
     70         /// </summary>
     71         /// <param name="sender"></param>
     72         /// <param name="e"></param>
     73         private void save_Click(object sender, EventArgs e)
     74         {
     75             string filecreate = @"mms\\content.txt";
     76 
     77             string mmsfile = Directory.GetCurrentDirectory() + @"\mms";//得到mms文件路径
     78             mmspath = mmsfile;
     79             try
     80             {//下面是创建txt文件并写入内容,copy图片到指定文件夹
     81                 if (!Directory.Exists(mmsfile))
     82                 {
     83                     Directory.CreateDirectory(mmsfile);
     84                     FileStream fs = new FileStream(filecreate, FileMode.Create, FileAccess.Write);
     85                     StreamWriter sw = new StreamWriter(fs);
     86                     sw.Write(txt_content.Text);
     87                     sw.Close();
     88                     fs.Close();
     89                     File.Copy(imagepath, mmsfile + "\\image.jpg", true);//copy文件,imagepath为源地址,mmsfile为新地址
     90                 }
     91                 else
     92                 {
     93                     FileStream fs = new FileStream(filecreate, FileMode.Open, FileAccess.Write);
     94                     StreamWriter sw = new StreamWriter(fs);
     95                     sw.Write(txt_content.Text);
     96                     sw.Close();
     97                     fs.Close();
     98                     File.Copy(imagepath, mmsfile + "\\image.jpg", true);
     99                 }
    100 
    101                 CreateZipFile(mmsfile, @"D:\\mms.zip");//压缩文件zip
    102 
    103                 MessageBox.Show("mms.zip创建成功!!!");
    104                 send.Enabled = true;
    105             }
    106             catch (IOException ex)
    107             {
    108                 MessageBox.Show(ex.ToString());
    109             }
    110         }
    111         /// <summary>
    112         /// http连接
    113         /// </summary>
    114         /// <param name="m_content"></param>
    115         public void mySubmit(string m_content)
    116         {
    117             try
    118             {
    119                 Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
    120                 byte[] data = Encoding.Default.GetBytes(GetPostData(ReadZIPContent()));
    121                 HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create("网站地址,自己填写");
    122                 myReq.Method = "POST";
    123                 myReq.ContentType = "application/x-www-form-urlencoded";
    124                 myReq.ContentLength = data.Length;
    125                 Stream outStream = myReq.GetRequestStream();
    126                 outStream.Write(data, 0, data.Length);
    127                 outStream.Close();
    128                 //下面的代码是用于解析返回数据,用于判断是否post数据成功,时间关系,这个请大家自己分析
    129                 WebResponse myResp = myReq.GetResponse();
    130                 Stream ReceiveStream = myResp.GetResponseStream();
    131                 StreamReader readStream = new StreamReader(ReceiveStream, encode);
    132                 Char[] read = new Char[256];
    133                 int count = readStream.Read(read, 0, 256);
    134                 string str = null;
    135                 while (count > 0)
    136                 {
    137                     str += new String(read, 0, count);
    138                     count = readStream.Read(read, 0, 256);
    139                     //textBox2.AppendText(str);
    140                 }
    141                 readStream.Close();
    142                 myResp.Close();
    143             }
    144             catch (System.Exception ex)
    145             {
    146 
    147             }
    148 
    149         }
    150 
    151         /// <summary>
    152         /// base64加密
    153         /// </summary>
    154         /// <returns></returns>
    155         public static string ReadZIPContent()
    156         {
    157             String str = "";
    158             try
    159             {
    160                 FileStream fs = new FileStream(@"D:\\mms.zip", FileMode.Open, FileAccess.Read);//读取zip文件
    161                 byte[] buffer2 = new byte[fs.Length];
    162                 str = Convert.ToBase64String(buffer2);//base64加密
    163                 fs.Close();
    164 
    165             }
    166             catch (Exception ex)
    167             {
    168                 MessageBox.Show("base64加密时错误!"+ex.ToString());
    169             }
    170 
    171             return str;
    172         }
    173 
    174         /// <summary>
    175         /// post data
    176         /// </summary>
    177         /// <param name="m_content">mms.zip</param>
    178         /// <returns>string</returns>
    179         private string GetPostData(string m_content)
    180         {
    181             string strRtn = "";
    182             //下面是要post的一些数据,开始的时候用的是String.Format,但是一直不能post,不知怎么回事,也懒得研究了,在网上找了这个方法,一试就行,哈哈!
    183
    184             NameValueCollection nvc = new NameValueCollection();
    185             nvc.Add("userName", "用户名");
    186             nvc.Add("password", "密码");
    187             nvc.Add("phone", phone);
    188             nvc.Add("serviceId", "100");
    189             nvc.Add("channelId", "1");
    190             nvc.Add("content", m_content);
    191             nvc.Add("linkId", "");
    192             nvc.Add("feePhone", "");
    193             nvc.Add("priority", "9");
    194             nvc.Add("subject", txt_title.Text.ToString());
    195             nvc.Add("productId", "");
    196             nvc.Add("deliveryReport", "1");
    197             nvc.Add("sendTime", "");
    198             foreach (string ie in nvc)
    199             {
    200                 strRtn += ie + "=" + nvc[ie] + "&";
    201             }
    202             if (strRtn.EndsWith("&"))
    203                 strRtn = strRtn.Substring(0, strRtn.Length - 1);
    204             return strRtn; ;
    205         }
    206         /// <summary>
    207         /// 添加压缩文件 这个方法是在网上搜的,要调用一个dll:ICSharpCode.SharpZipLib
    208         /// 可以自己搜一下,网上都有
    209         /// </summary>
    210         /// <param name="filesPath"></param>
    211         /// <param name="zipFilePath"></param>
    212         private static void CreateZipFile(string filesPath, string zipFilePath)
    213         {
    214 
    215             if (!Directory.Exists(filesPath))
    216             {
    217                 Console.WriteLine("Cannot find directory '{0}'", filesPath);
    218                 return;
    219             }
    220 
    221             try
    222             {
    223                 string[] filenames = Directory.GetFiles(filesPath);
    224                 using (ZipOutputStream s = new ZipOutputStream(File.Create(zipFilePath)))
    225                 {
    226 
    227                     s.SetLevel(9); // 压缩级别 0-9
    228                     //s.Password = "123"; //Zip压缩文件密码
    229                     byte[] buffer = new byte[4096]; //缓冲区大小
    230                     foreach (string file in filenames)
    231                     {
    232                         ZipEntry entry = new ZipEntry(Path.GetFileName(file));
    233                         entry.DateTime = DateTime.Now;
    234                         s.PutNextEntry(entry);
    235                         using (FileStream fs = File.OpenRead(file))
    236                         {
    237                             int sourceBytes;
    238                             do
    239                             {
    240                                 sourceBytes = fs.Read(buffer, 0, buffer.Length);
    241                                 s.Write(buffer, 0, sourceBytes);
    242                             } while (sourceBytes > 0);
    243                         }
    244                     }
    245                     s.Finish();
    246                     s.Close();
    247                 }
    248             }
    249             catch (Exception ex)
    250             {
    251                 Console.WriteLine("Exception during processing {0}", ex);
    252             }
    253         }
    254     }
    255 }

    截个图吧:

    代码写得有些乱,还有很多异常,很多问题未解决,有想法的自己弄了!

    最近很是郁闷啊!!!

  • 相关阅读:
    正则表达式 \n和\r
    【转】单循环赛赛程安排算法研究
    Iterator效率
    Map获取键值
    PL/SQL语法详解(pdf)
    Iterator模式
    测试js函数的静态页面
    【转】java的一些基本概念
    Oracle 11g用户解锁
    oracle官方文档
  • 原文地址:https://www.cnblogs.com/wuyihong/p/2519737.html
Copyright © 2011-2022 走看看