本来从来没有仔细研究过Http协议,今天因为公司业务需求,调试了半天,终于现在会Winform用Http协议与服务端通信了,其中常用的有POST和Get方式;

仔细看了人人网和新浪等大部分都是采用GET方式获取数据的,MSN截图如下:

还是不要脱离本文的主要目的:

模拟实现登录代码如下:

  1. private void pictureBox3_Click(object sender, EventArgs e)
  2. {
  3. string strUserName = textEdit1.Text.Trim(); //用户名
  4. string strUserPwd = textEdit2.Text.Trim(); //密码
  5.  
  6. if (string.IsNullOrEmpty(strUserName) || string.IsNullOrEmpty(strUserPwd))
  7. {
  8. XtraMessageBox.Show("请输入用户名和密码", "Transmate", MessageBoxButtons.RetryCancel);
  9. }
  10. else
  11. {
  12. string strPostData = "emailAddress=" + strUserName + "&password=" + strUserPwd+"";
  13.  
  14. HttpWebRequest httpWebRequest = WebRequest.Create("http://192.168.1.130:30160/TransmateWebService/login") as HttpWebRequest;
  15.  
  16. httpWebRequest.KeepAlive = false;
  17.  
  18. byte[] data = System.Text.Encoding.UTF8.GetBytes(strPostData);
  19.  
  20. httpWebRequest.Method = "POST";
  21.  
  22. httpWebRequest.ContentLength = data.Length;
  23. httpWebRequest.ContentType = "application/x-www-form-urlencoded";
  24. Stream NewStream = httpWebRequest.GetRequestStream();
  25. NewStream.Write(data,,data.Length);
  26. NewStream.Close();
  27.  
  28. HttpWebResponse response = httpWebRequest.GetResponse() as HttpWebResponse;
  29.  
  30. Stream ReviceStream = response.GetResponseStream();
  31. StreamReader streamReader = new StreamReader(ReviceStream,Encoding.UTF8);
  32. string StrContent = streamReader.ReadToEnd();
  33.  
  34. JObject JsonObject = JObject.Parse(StrContent);
  35. string loginCode = JsonObject["errorCode"].ToString();
  36. string TipMessage = JsonObject["message"].ToString();
  37.  
  38. if (loginCode == "")
  39. {
  40. XtraMessageBox.Show("登录成功,正在跳转....");
  41. }
  42. else
  43. {
  44. XtraMessageBox.Show("登录失败,请稍候重试");
  45. }
  46. }

开始调试了好久,出现下面的错误:

经过不断的查找和调试,主要是少写了一句话:

  1. httpWebRequest.ContentType = "application/x-www-form-urlencoded";

希望对大家有帮助,后续会正对HTTP、SOAP、TCP、UDP、Https、等基本协议开一个专题讨论这写问题;

PS :2014、11、17

后来在获取服务器返回的数据时候调试发现,服务器获取的只要是中文的代码,都是乱码;但是Post数据确实是进过UTF-8编码的啊,结果才发现是httpWebRequest.ContentType = "application/x-www-form-urlencoded";  中并没有添加对内容数据的编码,结果改为:

  1. httpWebRequest.ContentType = "application/x-www-form-urlencoded;charset=UTF-8";就正确,一上午就只解决这个问题。希望贴出来,供盆友们不要走弯路

winform 客户端 HTTP协议与服务端通信以及解决中文乱码的更多相关文章

  1. winform 客户端采用HTTP协议与服务端通信

    本来从来没有仔细研究过Http协议,今天因为公司业务需求,调试了半天,终于现在会Winform用Http协议与服务端通信了,其中常用的有POST和Get方式: 仔细看了人人网和新浪等大部分都是采用GE ...

  2. SuperSocket使用自定义协议与服务端通信发送实例

    AsyncTcpSession tcpSession = new AsyncTcpSession(); public Encoding encoding = Encoding.GetEncoding( ...

  3. 二、网络编程-socket之TCP协议开发客户端和服务端通信

    知识点:之前讲的udp协议传输数据是不安全的,不可靠不稳定的,tcp协议传输数据安全可靠,因为它们的通讯机制是不一样的.udp是用户数据报传输,也就是直接丢一个数据包给另外一个程序,就好比寄信给别人, ...

  4. socket 客户端和服务端通信

    客户端要连接服务器:首先要知道服务器的IP地址.而服务器里有很多的应用程序,每一个应用程序对应一个端口号 所以客户端想要与服务器中的某个应用程序进行通信就必须要知道那个应用程序的所在服务器的IP地址, ...

  5. Python进阶----SOCKET套接字基础, 客户端与服务端通信, 执行远端命令.

    Python进阶----SOCKET套接字基础, 客户端与服务端通信, 执行远端命令. 一丶socket套接字 什么是socket套接字: ​ ​  ​ 专业理解: socket是应用层与TCP/IP ...

  6. Netty入门之客户端与服务端通信(二)

    Netty入门之客户端与服务端通信(二) 一.简介 在上一篇博文中笔者写了关于Netty入门级的Hello World程序.书接上回,本博文是关于客户端与服务端的通信,感觉也没什么好说的了,直接上代码 ...

  7. Android BLE与终端通信(三)——客户端与服务端通信过程以及实现数据通信

    Android BLE与终端通信(三)--客户端与服务端通信过程以及实现数据通信 前面的终究只是小知识点,上不了台面,也只能算是起到一个科普的作用,而同步到实际的开发上去,今天就来延续前两篇实现蓝牙主 ...

  8. 基于开源SuperSocket实现客户端和服务端通信项目实战

    一.课程介绍 本期带给大家分享的是基于SuperSocket的项目实战,阿笨在实际工作中遇到的真实业务场景,请跟随阿笨的视角去如何实现打通B/S与C/S网络通讯,如果您对本期的<基于开源Supe ...

  9. 客户端通过HTTP协议与服务端交换数据

        客户端(包括浏览器)通过HTTP协议与服务端交换数据的描述 发起请求 header 键值对中的key大小写不敏感 Accept: application/json Content-Type: ...

随机推荐

  1. 使用django开发一个博客

    环境: MAC 10.10.5  Yosemite Python 3.73 Django 代码托管 github

  2. 2018年长沙理工大学第十三届程序设计竞赛 E 小木乃伊到我家 【最短路】

    时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 AA的欧尼酱qwb是个考古学家,有一天qwb发 ...

  3. Gateway

    网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连.网关的结构也和路由器类似,不同的是互连层.网关既可以用于广域网互连,也可以用于局域网互连. 网关是一种充当转换重 ...

  4. 10款CSS3进度条Loading动画

    在线演示 本地下载

  5. codeforces 154A 贪心

    贪心 题目自身限制每个字母最多出现在一个限制词语中,给出k个限制词语,将问题转化为k个子问题,对每个限制词语遍历给出的字符串,如限制词do,若出现连续的oddoood(连续的o和d),统计o和d出现的 ...

  6. LINQ 学习路程 -- 查询操作 where

    1.where Filtering Operators Description Where Returns values from the collection based on a predicat ...

  7. UOJ279 【UTR #2】题目交流通道

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000  作者博客:http://www.cnblogs.com/ljh2000-jump ...

  8. BZOJ 1010 [HNOI2008]玩具装箱toy:斜率优化dp

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1010 题意: 有n条线段,长度分别为C[i]. 你需要将所有的线段分成若干组,每组中线段的 ...

  9. jQuery学习(2)

    <script type="text/javascript"> //给网页中所有的<p>元素添加onclick事件 $("p").cli ...

  10. spring boot: 在maven中装入springframework框架

    1.在maven 的pom.xml中加入 <dependency> <groupId>org.springframework</groupId> <artif ...