HTTP的json post方式传输

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using System.IO;

using System.Net;
using System.Runtime.Serialization.Json;
using System.Security.Cryptography;

using System.Web;

namespace WindowsFormsApplication2
{


    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            FinalCallWebServerPost("","http://192.168.170.65:50000/mobile-data/1004/105?site=1510&userId=1072389&password=sap12345&");
        }


        public  struct mytest
        {

           public   string MSG;
            int NUM;
            bool isSuccess;

        }
        public struct mydata
        {

            public string OPERATION;
            public string RESOURCE;
            public string ACTION;
            public string SFC;

            public string SFC_TYPE;

          



        }




        /// <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)
        {

            mydata mn = new mydata();
            mn.ACTION= "START";
            mn.OPERATION = "DBLX";
            mn.RESOURCE = "RS_OB_DB001";
            mn.SFC = "20181222SFC10226";
            mn.SFC_TYPE = "SFC";

            string mystr = JsonSerializer<mydata>(mn);
            url = url + mystr;
            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();

            mytest mm = Deserialize<mytest>(retString);
            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;
        }
        
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值