JSON与PostAPI
第一步 定义JSON需要的类
public class User
{
public string username { get; set; }
public string password { get; set; }
}
public class TestAPI
{
public int code { get; set; }
public string message { get; set; }
public string datetime { get; set; }
}
第二步 编写Post发送数据与接收数据的函数
public static class HttpPost
{
/// <summary>
/// 带超时的Post发送Json,实现超时重发,启用接口日志
/// </summary>
/// <param name="url">地址</param>
/// <param name="data">Json字符串</param>
/// <param name="encoding">编码类型</param>
/// <param name="timeout">超时时间</param>
/// <returns></returns>
public static string PostJson(string url, string data, Encoding encoding, int timeout)
{
try
{
//初始化配置
HttpWebRequest tmpRequest = (HttpWebRequest)WebRequest.Create(url);
tmpRequest.Method = "POST";
tmpRequest.KeepAlive = false;
tmpRequest.Timeout = timeout;
tmpRequest.ContentType = "application/json";
byte[] tmpBts = encoding.GetBytes(data);
tmpRequest.ContentLength = tmpBts.Length;
//提交数据
Stream tmpRequestStream = tmpRequest.GetRequestStream();
tmpRequestStream.Write(tmpBts, 0, tmpBts.Length);
tmpRequestStream.Flush();
//接收数据
HttpWebResponse tmpResponse = (HttpWebResponse)tmpRequest.GetResponse();
Stream tmpResponseStream = tmpResponse.GetResponseStream();
StreamReader tmpStreamReader = new StreamReader(tmpResponseStream, encoding);
string retString = tmpStreamReader.ReadToEnd();
//关闭
tmpStreamReader.Close();
tmpResponseStream.Close();
tmpRequestStream.Close();
//返回数据
return retString;
}
catch (Exception ex)
{
return ex.ToString();
}
}
}
第三步 编写主函数
using Newtonsoft.Json;
using System.Text;
using TestJsonAndWebAPI;
User user = new User()
{
username = "test",
password = "123456"
};
string tmpUserStr = JsonConvert.SerializeObject(user);
Console.WriteLine(tmpUserStr);
string url = "http://114.132.240.163:9999/ActionApi/TestAPI/Login";
string postDataStr = tmpUserStr;
Encoding encoding = Encoding.UTF8;
int TimeOut = 5000;
string testStr = HttpPost.PostJson(url, postDataStr, encoding, TimeOut);
TestAPI test = JsonConvert.DeserializeObject<TestAPI>(testStr);
testStr = JsonConvert.SerializeObject(test);
Console.WriteLine(testStr);
完成