• .net服务器端发起请求封装


    写一个静态类封装类似客户端的请求

     public static class HttpHelper
        {
            #region Get
            public static string HttpGet(string url, Encoding encoding = null)
            {
                WebClient client = new WebClient
                {
                    Encoding = encoding ?? Encoding.UTF8
                };
                return client.DownloadString(url);
            }
    
            /// <summary>
            /// Get请求的泛型类返回固定类型
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="url"></param>
            /// <param name="encoding"></param>
            /// <returns></returns>
            public static T GetJson<T>(string url, Encoding encoding = null)
            {
                string input = HttpGet(url, encoding);
                JavaScriptSerializer serializer = new JavaScriptSerializer();
    
                return serializer.Deserialize<T>(input);
            }
    
            /// <summary>
            /// Get请求返回json字符串
            /// </summary>
            /// <param name="url"></param>
            /// <param name="encoding"></param>
            /// <returns></returns>
            public static string GetJsonStr(string url, Encoding encoding = null)
            {
                string input = HttpGet(url, encoding);
                return input;
            }
            #endregion
    
            #region Post
            /// <summary>
            /// 构造url的参数ajax的data值
            /// </summary>
            /// <param name="dic"></param>
            /// <returns></returns>
            public static string GetUrlStr(Dictionary<string, string> dic)
            {
                StringBuilder sb = new StringBuilder();
                foreach (var item in dic)
                {
                    sb.AppendFormat("{0}={1}&", item.Key, item.Value);
                }
                string urlStr = sb.Remove(sb.Length - 1, 1).ToString();
                return urlStr;
            }
    
            /// <summary>
            /// 发送post请求
            /// </summary>
            /// <param name="postData"></param>
            /// <param name="postUrl"></param>
            /// <returns></returns>
            public static string PostJsonStr(string postData, string postUrl)
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(postUrl);
                byte[] data = Encoding.GetEncoding("gbk").GetBytes(postData);
                request.Method = "POST";
                request.ContentType = "application/x-www-form-urlencoded";
                request.ContentLength = data.Length;
                using (Stream stream = request.GetRequestStream())
                {
                    stream.Write(data, 0, data.Length);
                }
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                string responseString = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8")).ReadToEnd();
                return responseString;
            }
    
            #endregion  
        }

    注意引用的命名空间

    using AutoO2O.BLL;
    using AutoO2O.Common;
    using AutoO2O.Models;
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Net;
    using System.Text;
    using System.Threading;
    using System.Timers;
    using System.Web.Mvc;

    将请求的结果转化输出给ajax请求

        protected string Write<T>(string callBack, string paramName, object o)
            {
                Newtonsoft.Json.JsonSerializerSettings jSetting = new Newtonsoft.Json.JsonSerializerSettings();
                jSetting.NullValueHandling = NullValueHandling.Ignore;
                if (string.IsNullOrEmpty(callBack) && string.IsNullOrEmpty(paramName))
                    return JsonConvert.SerializeObject(o, jSetting);
                else if (!string.IsNullOrEmpty(callBack))
                    return callBack + "(" + JsonConvert.SerializeObject(o, jSetting) + ");";
                else
                    return "var " + paramName + " = " + JsonConvert.SerializeObject(o, jSetting) + ";";
            }

    辅助测试

     public class MyClass
        {
            public string Name { get; set; }
            public string JC { get; set; }
    
        }
       public string MyTest()
            {
                string callBack = Request["callback"] + "";
                //string ss =GetJsonStr("http://192.168.5.88:8888/test/GetD/24");
                //return Write<MyClass>(callBack, "", ss);
                Dictionary<string, string>dic=new Dictionary<string,string>();
                dic.Add("id","15");
                string param = HttpHelper.GetUrlStr(dic);
                string result = HttpHelper.PostJsonStr(param, "http://192.168.5.88:8888/test/GetD");
                return Write<string>(callBack, "", result);      
            }

    静态页面请求

       $.ajax({
                url: 'http://192.168.5.88:8022/test/MyTest',
                dataType: 'jsonp',
                contetType:'text',
                success: function (res) {
                    debugger;
                }
    
            })

    调试

    显然请求成功

  • 相关阅读:
    为什么已经设置了更多的远程连接授权,同一账户登陆的时候还会被踢掉?
    如何添加并设置远程桌面(RD)授权服务器
    如何在Windows Server 2008 上添加RD (远程桌面)会话主机配置的远程桌面授权服务器
    DB2 Enterprise Server Edition(DB2 ESE)9.1在Windows Server 2008 下出现无法新建数据库的情况,及解决办法
    在非SQL客户端使用命令行方式定期连接SQL Server 服务器并模拟用户查询操作,同时输出信息内容
    相机模型2
    Ubuntu下实用的录屏软件--Kazam
    2d lidar 与相机
    linux 串口查询设置修改
    Eigen中 Isometry3d、matrix的Identity()
  • 原文地址:https://www.cnblogs.com/CallmeYhz/p/8920051.html
Copyright © 2020-2023  润新知