public class HttpTools
{
public static string GetRequest(string url)
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Method = "get";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
string result = sr.ReadToEnd();
return result;
}
} /// <summary>
/// HttpPostByJson
/// </summary>
/// <param name="url"></param>
/// <param name="param"></param>
/// <returns></returns>
public static string HttpPostByJson(string url, string param, WebHeaderCollection headers)
{
string strURL = url;
System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)WebRequest.Create(strURL);
//添加信息头(header)
request.Headers = headers;
request.Method = "POST";
request.ContentType = "application/json;charset=UTF-8";
string paraUrlCoded = param;
byte[] payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);
request.ContentLength = payload.Length;
Stream writer = request.GetRequestStream();
writer.Write(payload, , payload.Length);
writer.Close();
System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse();
System.IO.Stream s = response.GetResponseStream();
string StrDate = string.Empty;
StringBuilder sb = new StringBuilder();
StreamReader Reader = new StreamReader(s, Encoding.UTF8);
while ((StrDate = Reader.ReadLine()) != null)
{
sb.Append(StrDate);
}
return sb.ToString();
} /// <summary>
/// PostRequest
/// </summary>
/// <param name="url"></param>
/// <param name="paramList"></param>
/// <returns></returns>
public static string PostRequest(string url, Dictionary<object, object> paramList)
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
StringBuilder sb = new StringBuilder();
foreach (var item in paramList)
{
sb.Append(item.Key + "=" + item.Value + "&");
}
//将参数拼为:"name=test&pwd=123" 这种字符串格式 然后将字符串转为byte数组 最后将byte数组写入请求流中
string paramData = sb.ToString().Trim('&');
byte[] data = System.Text.Encoding.UTF8.GetBytes(paramData);
//设置post方式
request.Method = "post";
//这句不能少 不难post请求 得不到对应的响应结果
request.ContentType = "application/x-www-form-urlencoded";
//设置请求参数的长度
request.ContentLength = data.Length;
Stream stream = request.GetRequestStream();
stream.Write(data, , data.Length);
stream.Close();
/**
* *****************注意事项********************
*
* 不管是get还是post请求最后得到的响应流不能直接stream
* 不难得不到响应结果
*
*
* 直接使用Stream 不能获取响应的结果值
*
* 要使用StreamReader才能获取响应的结果值
*
* Stream stream = response.GetResponseStream();
*
* byte[] data = new byte[2*1024*1024]
*
* int r = stream.Read(data,0,data.Length);
*
* string result = System.Text.Encoding.UTF8.GetString(data, 0, r);
*
*
* **/
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
string result = sr.ReadToEnd();
return result;
}
} /// <summary>
/// 发出GET请求
/// </summary>
/// <param name="Url">请求URL</param>
/// <param name="heades">信息头</param>
/// <returns></returns>
public static string HttpGetByHeader(string Url, WebHeaderCollection heades)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
//添加信息头(header)
request.Headers = heades;
request.Method = "GET";
request.ContentType = "text/html;charset=UTF-8";
using (var response = request.GetResponse())
{
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
string retString = myStreamReader.ReadToEnd();
return retString;
}
}
}

测试代码:

 [HttpGet]
public ActionResult Test()
{
string url = "http://192.168.2.250:8092/Spread/Campaign/GetCampaignId?campaignName=string";
WebHeaderCollection header = new WebHeaderCollection();
header["Token"] = "AF4DAFC2-1E76-4864-AE5B-AE0FB73C64EF";
string result = Common.HttpTools.HttpGetByHeader(url, header);
return Content(result);
} public ActionResult TestPost()
{
string url = "http://192.168.2.250:8092/Spread/Campaign/CreateCampaign";
CampaignArgsModel model = new CampaignArgsModel()
{
CampaignName = "TestPost",
FromEmail = "786483815@qq.com",
From = "From",
Content = "Content",
Interval = ,
Signature = "",
Subject = "Subject",
Schedule = DateTime.Now,
Categories = new List<string>() { "TestPost" }, };
string param = JsonConvert.SerializeObject(model);
WebHeaderCollection header = new WebHeaderCollection();
header["Token"] = "AF4DAFC2-1E76-4864-AE5B-AE0FB73C64EF";
string result = Common.HttpTools.HttpPostByJson(url, param, header);
return Content(result);
}

C# http get与post请求方法的更多相关文章

  1. HTTP请求方法详解

    HTTP请求方法详解 请求方法:指定了客户端想对指定的资源/服务器作何种操作 下面我们介绍HTTP/1.1中可用的请求方法: [GET:获取资源]     GET方法用来请求已被URI识别的资源.指定 ...

  2. HTTP请求方法

    HTTP请求方法 根据HTTP标准,HTTP请求可以使用多种请求方法. HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法. HTTP1.1新增了五种请求方法:OPTIONS, ...

  3. iOS开发 GET、POST请求方法(NSURLSession篇)

    NSURLConnection,在iOS9被宣布弃用,本文不使用NSURLConnection进行网络编程,有兴趣的童鞋可以参考: [iOS开发 GET.POST请求方法(NSURLConnectio ...

  4. iOS开发 GET、POST请求方法(NSURLConnection篇)

    Web Service使用的主要协议是HTTP协议,即超文本传输协议. HTTP/1.1协议共定义了8种请求方法(OPTIONS.HEAD.GET.POST.PUT.DELETE.TRACE.CONN ...

  5. HTTP协议中POST、GET、HEAD、PUT等请求方法以及一些常见错误

    (来源:http://www.tuicool.com/articles/Ermmmyn) HTTP请求方法: 常用方法: Get\Post\Head (1)Get方法. 取回请求URL标志的任何信息, ...

  6. HTTP请求响应报文&&相关状态码&&GET_POST请求方法 总结

    HTTP请求报文: 一个HTTP请求报文由四个部分组成:请求行.请求头部.空行.请求数据 1.请求行   请求行由请求方法字段.URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔.比如 GE ...

  7. HTTP 笔记与总结(2 )HTTP 协议的(请求行的)请求方法 及 (响应行的)状态码

    (请求行的)请求方法 包括: GET,POST,HEAD,PUT,TRACE,DELETE,OPTIONS 注意:这些请求方法虽然是 HTTP 协议规定的,但是 Web Server 未必允许或支持这 ...

  8. httpclient请求方法

    /** * httpclient请求方法 * @param url 请求地址 * @param paramMap 请求参数 * @param ent 编码格式 gbk.utf-8 * @return ...

  9. HTTP请求方法对照表

    根据HTTP标准,HTTP请求可以使用多种请求方法. HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法. HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELE ...

  10. http请求方法与响应状态码

    请求方法:GET POST HEAD PUT DELETE OPTIONS常用的方法是:GET POST GET提交可以在浏览器地址栏看到提交的信息 POST提交方式不显示在地址栏,相对于GET方式较 ...

随机推荐

  1. SpringMVC @RequestBody的使用

    @RequestBody的作用 @RequestBody用于读取Request请求的body数据,然后利用SpringMVC配置的HttpMessageConverter对数据进行转换,最后把转换后的 ...

  2. Java之多线程(实现Runnable接口)

    package test_demo.ThreadsDemo; public class TestRunnable { public static void main(String[] args) { ...

  3. if --else的注意点

  4. IT行业­——Linux

    现在是21世纪,是科学技术大力发展的一个时代,IT行业已经成为现在的一个非常热门的一个行业,许许多多的人都想要往IT方面发展,找IT方面相关的一个工作.因此,现在也出现了很多IT培训机构,比如培训Li ...

  5. python 模块之-hashlib

    python 模块hashlib import hashlib m=hashlib.md5()         # 生成MD5加密对象 m.update('jiami-string'.encode(' ...

  6. SQL partition (小组排序)

    很多时候,我们在SQL中进行数据去重(distinct) 结果发现有2条一样ID,或者name的数据,我们想要最接近的那条数据. 直接看看题目: 原表 select ID,Title,PRICE fr ...

  7. day28 classmethod 装饰器

    类方法装饰类方法 把一个方法变成类中的方法 之后调用此方法不需要对类实例化后在调用 直接通过类.方法即可调用 class Goods: __discount = 0.5 def __init__(se ...

  8. 自学Linux Shell13.2-选项处理(主要getopt、getopts命令)

    点击返回 自学Linux命令行与Shell脚本之路 Bash shell提供了一些不同的方法来从用户处获得数据,包括以下3中方法: 命令行参数(添加在名利后面的数据) 命令行选项(可修改命令行为的单个 ...

  9. 牛客练习赛 小D的Lemon 解题报告

    小D的Lemon 题意 已知 \[ g(x)=\left\{\begin{matrix} 1&,x=1\\ \sum_{i=1}^qk_i&,otherwise \end{matrix ...

  10. luogu4185 [USACO18JAN]MooTube (并查集)

    类似于NOI2018d1t1的离线做法,把询问存下来,排个序,然后倒着给并查集加边,每次询问并查集联通块大小 #include<bits/stdc++.h> #define ll long ...