1.封装post方法发送

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Runtime.Serialization.Json;
using System.Security.Cryptography;
using System.Text;
using System.Web; public class WebPostManager
{
/// <summary>
/// 发送请求到web服务器,并接受消息,T 是接受的class结构,T2是发送的class结构
/// </summary>
/// <typeparam name="T"></typeparam>
/// <typeparam name="T2"></typeparam>
/// <param name="obj"></param>
/// <param name="url"></param>
/// <returns></returns>
public static T CallWebServerPost<T, T2>(T2 obj,string url)
{
string poststr = JsonSerializer(obj);  //对象转化为字符串发送
string backmsg = FinalCallWebServerPost(poststr, url);  //发送请求返回相应的数据
T js = Deserialize<T>(backmsg);  //返回数据进行反序列化
return js;
} public static string FinalCallWebServerPost(string postDataStr,string url)
{
Uri myuri = new Uri(url);
var request = WebRequest.Create(myuri) as HttpWebRequest; request.Method = "POST";  //post
request.ContentType = "application/json";
Stream myRequestStream = request.GetRequestStream();
StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.UTF8);
myStreamWriter.Write(postDataStr);
myStreamWriter.Close();
var Response = request.GetResponse() as HttpWebResponse;
Stream myResponseStream = Response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return retString;
} public static T Deserialize<T>(string json)
{
T obj = Activator.CreateInstance<T>();
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
return (T)serializer.ReadObject(ms);
}
} public static string JsonSerializer<T>(T t)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
MemoryStream ms = new MemoryStream();
ser.WriteObject(ms, t);
string jsonString = Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
return jsonString;
}
}

2.调用例子

        public static WebResponseBase ResetNoticeCommad(string Info)
{
WebRequestBase dic = new WebRequestBase();
dic.Type = (int)CommandType.ResetNotice;
dic.Name = Info;
dic.Sign = MD5Check.Sign(dic.PreSign, Info);
return WebPostManager.CallWebServerPost<WebResponseBase, WebRequestBase>(dic, Url);
}

最新文章

  1. [SQL]查询数据库里都有哪些自己建的表
  2. Unity3D游戏引擎最详尽基础教程
  3. C#代码创建3D模型
  4. struts2验证框架1
  5. FFMPEG解码流程
  6. javascript的词法分析
  7. 从零开始学JAVA(03)-用Eclipse生成HelloWorld的Jar文件(简单不带包)
  8. iOS进阶——可取消的block
  9. shell脚本报错:&quot;[: =: unary operator expected&quot;
  10. linux基础之find
  11. AndroidStudio Gradle下载速度慢解决方法
  12. 解决“centos 下bash: g++: 未找到命令...”
  13. Python hypot() 函数
  14. [CodePlus 2017 11月赛]晨跑 题解(辗转相除法求GCD)
  15. kali2.0安装虚拟机工具
  16. ScaleIO 1.2 基础
  17. 【实验二】Spring框架笔记——NamedParameterJdbcTemplate与具名参数
  18. HDU1081:To The Max(最大子矩阵,线性DP)
  19. asp.net中的cookie
  20. iPad游戏 Calcculator: The Game 程序自动计算求解方法

热门文章

  1. Android一个简单的自定义对话框制作
  2. Android中创建一个BroadcastReceiver
  3. Spark调优指南
  4. STL入门学习中碰到的一些函数
  5. Win10的Cortana小娜反应慢?试试这个方法
  6. 解决kbmMW Scheduler在任务中停止任务遇到的问题
  7. 怎样在GitHub上新建一个文件夹
  8. P4883 mzf的考验[平衡树]
  9. 使用Python爬虫整理小说网资源-自学
  10. 小程序onShow事件获取options方法