1.Post 请求发送方式

实例:

const string sResponseEncoding = "gb2312";

//测试文本信息

string postText = "{\"touser\":\"OpenId\",\"msgtype\":\"text\",\"text\":{\"content\":\"Hello World\"}}";

//测试图文信息

string postNews = "{\"touser\":\"OpenId\",\"msgtype\":\"news\",\"news\":{\"articles\":[{\"title\":\"测试1\",\"description\":\"Is Really A Happy Day\",\"url\":\"URL\",\"picurl\":\"http://avatar.csdn.net/C/2/8/1_zhoufoxcn.jpg\"},{\"title\":\"测试2\",\"description\":\"Is Really A Happy Day\",\"url\":\"URL\",\"picurl\":\"http://avatar.csdn.net/C/2/8/1_zhoufoxcn.jpg\"}]}}";

const string url = "http;//URL";

HttpWebRequest webrequest = (HttpWebRequest)HttpWebRequest.Create(url);

webrequest.Method = "post";

webrequest.Timeout = 10000;     //响应时间时间

webrequest= "application/json;charset=UTF-8";   //传递格式

webrequest.Credentials = CredentialCache.DefaultCredentials; //请求的身份验证信息为默认

string key = "My-Key";   //默认密钥

string timestamp = DateTime.Now.Ticks.ToString();//时间戳

webrequest.Headers.Add(“key”, key);

webrequest.Headers.Add(“timestamp”, timestamp);

//字符-字节-流

byte[] postdatabyte = Encoding.UTF8.GetBytes(postText);

webrequest.ContentLength = postdatabyte.Length;

Stream stream;

stream = webrequest.GetRequestStream();

stream.Write(postdatabyte, 0, postdatabyte.Length);

stream.Close();

Stream responseStream;

try

{  responseStream = webrequest.GetResponse().GetResponseStream();  }

catch (Exception e)

{  Console.WriteLine(string.Format("POST 操作发生异常:{0}", e.Message));   throw e;  }

string stringResponse = string.Empty;

using (StreamReader responseReader = new StreamReader(responseStream, Encoding.GetEncoding(sResponseEncoding)))

{

stringResponse = responseReader.ReadToEnd();

}

responseStream.Close();

Console.WriteLine(stringResponse);

Console.ReadKey();

2.Get 请求方式(httpClient)

HttpClient httpClient = new HttpClient();

string key = "My-Key";   //默认密钥

string timestamp = DateTime.Now.Ticks.ToString();

string url = “”;

HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, url);

request.Headers.Add(key, key);

request.Headers.Add(timestamp, timestamp);

HttpResponseMessage responseMessage = await httpClient.SendAsync(request);

Console.WriteLine(await responseMessage.Content.ReadAsStringAsync());

Console.ReadKey();

3.服务器接口

public ActionResult ReceiveData(string jsonpcallback)

{

var headers = HttpContext.Request.Headers.ToString();//获取headers 内容
            Stream s = System.Web.HttpContext.Current.Request.InputStream;
            byte[] receByte = new byte[s.Length];
            s.Read(receByte, 0, (int)s.Length);

var receData = Encoding.UTF8.GetString(receByte);
           var JsReceData = Newtonsoft.Json.JsonConvert.DeserializeObject<WxReceive>(receData);

//返回参数格式

if (string.IsNullOrEmpty(jsonpcallback))
             return Json(QRTxt);
        else
            return JavaScript(string.Format("{0}({1});", jsonpcallback, Newtonsoft.Json.JsonConvert.SerializeObject(QRTxt)));

}

//声明实体类

public class WxReceive
    {
        public string touser { get; set; }
        public string msgtype { get; set; }
    }

//微信图文消息实体类
    public class WxReceiveNews
    {
        public string touser { get; set; }
        public string msgtype { get; set; }
        public news news { get; set; }
    }
    public class news
    {
        public List<articles> articles { get; set; }
    }
    public class articles
    {
        public string title { get; set; }
        public string description { get; set; }
        public string url { get; set; }
        public string picurl { get; set; }
    }

4.其它

传递到服务器Base64,字符串进行URL解码:

HttpUtility.UrlDecode(data.ToString().Trim());

参考文章和资源:

Post和Get 实例 http://blog.csdn.net/make1828/article/details/40649759

Post 提交讲解:https://imququ.com/post/four-ways-to-post-data-in-http.html

https://support.microsoft.com/zh-cn/kb/908573

http://www.cnblogs.com/ThomasNet/archive/2007/09/03/879331.html

http://www.cnblogs.com/netqq/p/5773846.html

http://bbs.csdn.net/topics/390820845/

http://blog.csdn.net/make1828/article/details/40649759

最新文章

  1. 用fontAwesome代替网页icon小图标
  2. 奇怪吸引子---WangSun
  3. 对于数据包的截取,使用linux中的netfilter钩子函数
  4. 博弈论(男人八题):POJ 1740 A New Stone Game
  5. Java实现ajax
  6. 读书笔记--用Python写网络爬虫02--数据抓取
  7. v3学院带你一次性认清UART、RS-232、RS-422、RS-485的区别
  8. Mac OSX下Sublime Text配置使用Ctags实现代码跳转
  9. 2018-2019-2 20165231王杨鸿永《网络对抗》Exp1 PC平台逆向破解
  10. jQuery-3.事件篇---事件对象的使用
  11. Ex 2_4 假定您需要在以下三种算法中作出抉择..._第三次作业
  12. 修改C#mvc的默认首页
  13. ACM学习&lt;一&gt;
  14. 使用POP3协议接收并解析电子邮件(全)
  15. Gitlab使用QQ企业邮箱发送邮件
  16. ibatis.net:第一天,什么是 mybatis.net ?
  17. 【Linux】shell编程案例
  18. Mysql ON子句和USING子句
  19. 002 Ajax中传输格式为HTML
  20. hihocoder #1299 : 打折机票 线段树

热门文章

  1. Xterm256终端颜色的名称
  2. 解决MySQL中文乱码
  3. 修改phpMyAdmin导入SQL文件的大小限制
  4. 博弈论入门题 kiki&#39;s game
  5. Mutual Training for Wannafly Union #9
  6. Ubuntu 16.04利用SecureCRT上传/下载文件(sz/rz命令)
  7. Python学习系列之装饰器
  8. win7开启超级管理员账户(Administrator)
  9. cocos2d-x中绘制3D图形--3D ToolKit for cocos2dx实现原理
  10. IDEA启动Tomcat报错