C# 后台调用http,post访问url,获取数据
2024-10-08 10:15:49
1.封装post方法发送
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Runtime.Serialization.Json;
using System.Security.Cryptography;
using System.Text;
using System.Web; public class WebPostManager
{
/// <summary>
/// 发送请求到web服务器,并接受消息,T 是接受的class结构,T2是发送的class结构
/// </summary>
/// <typeparam name="T"></typeparam>
/// <typeparam name="T2"></typeparam>
/// <param name="obj"></param>
/// <param name="url"></param>
/// <returns></returns>
public static T CallWebServerPost<T, T2>(T2 obj,string url)
{
string poststr = JsonSerializer(obj); //对象转化为字符串发送
string backmsg = FinalCallWebServerPost(poststr, url); //发送请求返回相应的数据
T js = Deserialize<T>(backmsg); //返回数据进行反序列化
return js;
} public static string FinalCallWebServerPost(string postDataStr,string url)
{
Uri myuri = new Uri(url);
var request = WebRequest.Create(myuri) as HttpWebRequest; request.Method = "POST"; //post
request.ContentType = "application/json";
Stream myRequestStream = request.GetRequestStream();
StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.UTF8);
myStreamWriter.Write(postDataStr);
myStreamWriter.Close();
var Response = request.GetResponse() as HttpWebResponse;
Stream myResponseStream = Response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return retString;
} public static T Deserialize<T>(string json)
{
T obj = Activator.CreateInstance<T>();
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
return (T)serializer.ReadObject(ms);
}
} public static string JsonSerializer<T>(T t)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
MemoryStream ms = new MemoryStream();
ser.WriteObject(ms, t);
string jsonString = Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
return jsonString;
}
}
2.调用例子
public static WebResponseBase ResetNoticeCommad(string Info)
{
WebRequestBase dic = new WebRequestBase();
dic.Type = (int)CommandType.ResetNotice;
dic.Name = Info;
dic.Sign = MD5Check.Sign(dic.PreSign, Info);
return WebPostManager.CallWebServerPost<WebResponseBase, WebRequestBase>(dic, Url);
}
最新文章
- [SQL]查询数据库里都有哪些自己建的表
- Unity3D游戏引擎最详尽基础教程
- C#代码创建3D模型
- struts2验证框架1
- FFMPEG解码流程
- javascript的词法分析
- 从零开始学JAVA(03)-用Eclipse生成HelloWorld的Jar文件(简单不带包)
- iOS进阶——可取消的block
- shell脚本报错:";[: =: unary operator expected";
- linux基础之find
- AndroidStudio Gradle下载速度慢解决方法
- 解决“centos 下bash: g++: 未找到命令...”
- Python hypot() 函数
- [CodePlus 2017 11月赛]晨跑 题解(辗转相除法求GCD)
- kali2.0安装虚拟机工具
- ScaleIO 1.2 基础
- 【实验二】Spring框架笔记——NamedParameterJdbcTemplate与具名参数
- HDU1081:To The Max(最大子矩阵,线性DP)
- asp.net中的cookie
- iPad游戏 Calcculator: The Game 程序自动计算求解方法