post方法集(客户端里的后台方法),主要实现了客户端后台方法,post的数据获取和传值。
提取出的方法:
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
namespace MvcApplication1.Controllers
{
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
//获取网页标签代码
GetHtml("https://www.cnblogs.com/kissdodog/archive/2013/04/06/3002779.html");
//post传值(Json格式)和获取值(Json格式),较为完美
string Js = "{ \"Name\": \"Test\" }";
string get= PostHttpUrl("http://localhost:4393/api/values",Js);
//获得Get方法接口
WebGet("http://localhost:4393/api/values");
//Webpost2传入Json格式的string 只是传入无返回值
string json = "{ \"Name\": \"Test\" }";
WebPost2("http://localhost:4393/api/values",json,null);
string js = "Name="+"bu";//自动编码格式 "类名="+"参数"
//获得Post方法接口
WebPost("http://localhost:4393/api/values","",js);
return View();
}
/// <summary>
/// 获取整个网页的代码标签
/// </summary>
/// <param name="url">网站地址</param>
/// <returns></returns>
private static string GetHtml(string url)
{
/**HttpWebRequest类介绍
基本满足网络的请求的需求:获取网页值,...
*/
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); //创建一个请求示例
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); //获取响应,即发送请求
Stream responseStream = response.GetResponseStream();
StreamReader streamReader = new StreamReader(responseStream, Encoding.UTF8);
return streamReader.ReadToEnd();
}
/// <summary>
/// .net 后台 post http地址请求
/// </summary>
/// <param name="uri">请求地址</param>
/// <param name="postData">请求数据</param>
/// type=application/x-www-form-urlencoded
/// type=application/json;charset=UTF-8
/// <returns></returns>
private string PostHttpUrl(string uri, string postData)
{
try
{
byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(postData); //字符串转换成ASCII码,有利于流的传输
HttpWebRequest objWebRequest = (HttpWebRequest)WebRequest.Create(uri); //发送地址
objWebRequest.Method = "POST";//提交方式
objWebRequest.ContentType = "application/json;charset=UTF-8";//获取的值的类型,Json
objWebRequest.ContentLength = byteArray.Length; //需要发送的内容的大小
using (Stream newStream = objWebRequest.GetRequestStream())
{
newStream.Write(byteArray, 0, byteArray.Length); //写入参数
newStream.Close();
}
HttpWebResponse response = (HttpWebResponse)objWebRequest.GetResponse();//获取响应
StreamReader sr = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);//重新把获取数据的流转换成ASCII码
return sr.ReadToEnd(); // 返回的数据,从头把流转换成字符
}
catch (Exception ex)
{
return "网络错误:" + ex.Message.ToString();
}
}
/// <summary>
/// WebPostApi请求传参和获取值
/// </summary>
/// <param name="url">post链接</param>
/// <param name="json">传入的Json参数</param>
private void WebPost2(string url,string json ,string action)
{
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var jObject = JObject.Parse(json);
var response = client.PostAsJsonAsync(url, jObject).Result;
if (!response.IsSuccessStatusCode)
{
Response.Write(string.Format("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase));
}
}
/// <summary>
/// GET,获取url的返回值
/// </summary>
/// <param name="url">eg:http://m.weather.com.cn/atad/101010100.html </param>
public string WebGet(string url)
{
try
{
string strBuff = "";
Uri httpURL = new Uri(url);
///HttpWebRequest类继承于WebRequest,并没有自己的构造函数,需通过WebRequest的Creat方法 建立,并进行强制的类型转换
HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(httpURL);
///通过HttpWebRequest的GetResponse()方法建立HttpWebResponse,强制类型转换
HttpWebResponse httpResp = (HttpWebResponse)httpReq.GetResponse();
///GetResponseStream()方法获取HTTP响应的数据流,并尝试取得URL中所指定的网页内容
///若成功取得网页的内容,则以System.IO.Stream形式返回,若失败则产生ProtoclViolationException错 误。在此正确的做法应将以下的代码放到一个try块中处理。这里简单处理
Stream respStream = httpResp.GetResponseStream();
///返回的内容是Stream形式的,所以可以利用StreamReader类获取GetResponseStream的内容,并以
//StreamReader类的Read方法依次读取网页源程序代码每一行的内容,直至行尾(读取的编码格式:UTF8)
StreamReader respStreamReader = new StreamReader(respStream, Encoding.UTF8);//Encoding.UTF8
strBuff = respStreamReader.ReadToEnd();
return strBuff;
}
catch
{
return "400";
}
}
/// <summary>
/// Post方法
/// </summary>
/// <param name="url">地址</param>
/// <param name="method">方法action</param>
/// <param name="param">json参数</param>
/// <returns></returns>
public static string WebPost(string url, string method, string param)
{
try
{
//转换输入参数的编码类型,获取bytep[]数组 转换成Json格式
//byte[] byteArray = Encoding.UTF8.GetBytes("json=" + param);
byte[] byteArray = Encoding.UTF8.GetBytes(param);
//初始化新的webRequst
//1. 创建httpWebRequest对象
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(new Uri(url + "/" + method));
//2. 初始化HttpWebRequest对象
webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.ContentLength = byteArray.Length;
//3. 附加要POST给服务器的数据到HttpWebRequest对象(附加POST数据的过程比较特殊,它并没有提供一个属性给用户存取,需要写入HttpWebRequest对象提供的一个stream里面。)
Stream newStream = webRequest.GetRequestStream();//创建一个Stream,赋值是写入HttpWebRequest对象提供的一个stream里面
newStream.Write(byteArray, 0, byteArray.Length);
// newStream.Close();
//4. 读取服务器的返回信息
HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
StreamReader php = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
string phpend = php.ReadToEnd();
return phpend;
}
catch
{
return "400";
}
}
}
}
配合项目阅读:https://download.csdn.net/download/weixin_42401291/10724179
分客户端和服务端,需要同时运行。
希望同行的多多指点。
完
程序开发(ASP.NET、C#)、网站建设(H5)、小程序、公众号等相关开发联系QQ:1174787689 备注 程序开发合作