HttpPost传入JSON参数的方法

 项目中需要读取善一门禁的数据,调试中出现了许多问题特此记录

1.使用postman读取数据是正常的如下图

2.但是我写的程序却出现许多错误,原因是Json参数是区分大小写的 

页面前端js代码,返回的字符串需要进行两次转换,才能转换为Json对象

<script type="text/javascript">
    $(function () {
        getGoodOne();
       // GetOrganization();
    });

    function getGoodOne() {
     
                $.ajax({
                    type: 'POST',
                    url: '@Url.Action("getGoodOne")',
                    //contentType: "application/json; charset=utf-8",
                    data: { 
                    //dateFrom: dateFrom,
                    //dateTo: dateTo,
                    },
                    async: false,

                    dataType: "json",
                    success: function (data) {
                        console.log(data)
                        var obj = JSON.parse(data)
                        console.log(obj)

                        var obj1 = JSON.parse(obj)
                        console.log(obj1)

                        console.log(obj1.UserToken)
                        //console.log(obj1.WebResultInfoOfWebLoginInfoIXkc_Sq2E.data.accessToken)

                       },
                       error: function (message) {
                        // alert(message);
                    }
                    });

    }
</script>

下面是controller层代码

        public JsonResult getGoodOne()
        {
            string url = "http://192.168.1.3:9950/KernelService/login";
            //string context = "{'UserName':'admin','Password':'admin'}";
            string username = "admin";
            string Password = "admin";
            string ClientID = "ClientID";
            string KeepTime = "7200";
            string context =  " {\"UserName\":\"" + username + "\",\"Password\":\"" + Password + "\",\"ClientID\":\"" + ClientID + "\",\"KeepTime\":" + KeepTime + "}";
 
            string html = WebAPI.httpPost(url, context);
            string js = JsonConvert.SerializeObject(html); 

            return Json(js);
        }

 httpPost方法代码

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Web;
using System.Web.Http;

namespace com.abc.Util
{
    public class WebAPI
    {

        /// <summary>
        /// 指定Post地址使用Get 方式获取全部字符串
        /// </summary>
        /// <param name="url">请求后台地址</param>
        /// <param name="content">Post提交数据内容(utf-8编码的)</param>
        /// <returns></returns>
        public static string httpPost(string url, string content)
        {
            string result = "";
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
            req.Method = "POST"; 
            req.ContentType = "application/json; charset=utf-8"; 
            req.Accept = "application/json";

            #region 添加Post 参数
            byte[] data = Encoding.UTF8.GetBytes(content);
            req.ContentLength = data.Length;
            using (Stream reqStream = req.GetRequestStream())
            {
                reqStream.Write(data, 0, data.Length);
                reqStream.Close();
            }
            #endregion

            HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
            Stream stream = resp.GetResponseStream();
            //获取响应内容
            using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
            {
                result = reader.ReadToEnd();
            }
            return result;
        }  

        public static string GetHtml(string URL)
        {
            // HttpContext.Response.AppendHeader("Access-Control-Allow-Origin", "*");

            WebRequest wrt;
            wrt = WebRequest.Create(URL);
            wrt.Credentials = CredentialCache.DefaultCredentials;

            string code = Convert.ToBase64String(Encoding.ASCII.GetBytes(string.Format("{0}:{1}", "admin", "123"))); //此处是用户名和密码

            //添加Authorization到HTTP头
            wrt.Headers.Add("Authorization", "Basic " + code);
            wrt.Method = "GET";
            WebResponse wrp;

            wrp = wrt.GetResponse(); 

            //wrp.Headers.Add("Access-Control-Allow-Origin", "*");
          
            string reader = new StreamReader(wrp.GetResponseStream(), System.Text.Encoding.Default).ReadToEnd();
            // string reader = new StreamReader(wrp.GetResponseStream(), Encoding.GetEncoding("gb2312")).ReadToEnd();
            try
            {
                wrt.GetResponse().Close();
            }
            catch (WebException ex)
            {
                throw ex;
            }
            return reader;
        } 
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值