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

 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 - , ).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, , 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","");
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;
} })

调试

显然请求成功

.net服务器端发起请求封装的更多相关文章

  1. CTF SSRF(服务器端伪造请求)

    目录 CTF SSRF(服务器端伪造请求) 一.概念 二.危害 三.漏洞挖掘与判断 四.相关函数 五.IP绕过 六.Gopher协议 1.使用限制 2.构造payload CTF SSRF(服务器端伪 ...

  2. Elasticsearch High Level Rest Client 发起请求的过程分析

    本文讨论的是JAVA High Level Rest Client向ElasticSearch6.3.2发送请求(index操作.update.delete--)的一个详细过程的理解,主要涉及到Res ...

  3. PHP Request请求封装

    /** * Request请求封装 * Class Request * @package tool */ class Request { // curl 请求错误码 protected static ...

  4. axios请求封装和异常统一处理

    前端网络请求封装前端采用了axios来处理网络请求,为了避免在每次请求时都去判断各种各样的网络情况,比如连接超时.服务器内部错误.权限不足等等不一而足,我对axios进行了简单的封装,这里主要使用了a ...

  5. Vue: axios 请求封装及设置默认域名前缀 (for Vue 2.0)

    1. 实现效果 以get方法向http://192.168.32.12:8080/users 发起请求.获取数据并进行处理 this.apiGet('/users', {}) .then((res) ...

  6. javascript 异步请求封装成同步请求

    此方法是异步请求封装成同步请求,加上token验证,环境试用微信小程序,可以修改文件中的ajax,进行封装自己的,比如用axios等 成功码采用标准的 200 到 300 和304 ,需要可以自行修改 ...

  7. flutter dio网络请求封装实现

    flutter dio网络请求封装实现 文章友情链接:   https://juejin.im/post/6844904098643312648 在Flutter项目中使用网络请求的方式大致可分为两种 ...

  8. Ajax向服务器端发送请求

    Ajax向服务器端发送请求 Ajax的应用场景 页面上拉加载更多数据 列表数据无刷新分页 表单项离开焦点数据验证 搜索框提示文字下拉列表 Ajax运行原理 Ajax 相当于浏览器发送请求与接收响应的代 ...

  9. Vue2使用Axios发起请求教程详细

    当你看到该文章时希望你已知晓什么是跨域请求以及跨域请求的处理,本文不会赘述 本文后台基于Springboot2.3进行搭建,Controller中不会写任何业务逻辑仅用于配合前端调试 Controll ...

随机推荐

  1. Python项目在Jenkins中的自动化测试实践(语法检查、单元测试,coverage(代码覆盖率)、自动打包)

    原始链接:http://blog.csdn.net/a464057216/article/details/52934077 requirments OS: Ubuntu 14.04+ Gitlab 8 ...

  2. 1、Flask实战第1天:第一个Flask程序

    Flask是流行的python web框架...(* ̄︶ ̄) 零基础到企业级论坛实战,人生苦短,我用python,开启FLask之旅吧... 安装开发环境 下载Python win版安装包 双击运行, ...

  3. 【分块】bzoj2957 楼房重建

    http://www.cnblogs.com/wmrv587/p/3843681.html ORZ 分块大爷.思路很神奇也很清晰. 把 块内最值 和 块内有序 两种良好的性质结合起来,非常棒地解决了这 ...

  4. Mybatis全部标签

    一.定义SQL语句 (1)select 标签的使用 属性介绍: id :唯一的标识符. parameterType:传给此语句的参数的全路径名或别名 例:com.test.poso.User或user ...

  5. redis踩坑记

    本来打算给一批主库做从库,用来读取数据,还不想碰主库数据. 主库redis2.8.12,从库一开始没注意,docker了一个3.1的,结果slaveof之后命令不兼容,下了一个2.8的(2.8.23好 ...

  6. 焦点改变事件OnFocusChangeListener

    效果图 1.MainActivity.java package com.example.app2; import android.support.v7.app.AppCompatActivity; i ...

  7. duplicate symbol _gestureMinimumTranslation in:

    在真机上编译无误,在模拟器上编译报错:duplicate symbol _gestureMinimumTranslation in: /Users/Sam/Library/Developer/Xcod ...

  8. Ubuntu 16.04通过源码安装QUEM虚拟机

    下载编译安装: wget http://download.qemu-project.org/qemu-2.9.0.tar.xz tar xvJf qemu-2.9.0.tar.xz cd qemu-2 ...

  9. U盘安装Ubuntu 16.04出现:Failed to load ldlinux.c32

    启动的时候如果不开启UEFI,则会提示: Failed to load ldlinux.c32 Boot failed: please change disks and press a key to ...

  10. 如何垂直居中元素(浮动元素&居中一个<img>)?

    1.如何居中一个浮动元素? 方法一:已知元素的高度   <!DOCTYPE html> <html lang="en"> <head> < ...