嗯。。很久不更新,因为跳槽新公司了,要学的东西太多太忙了。也没时间记录,今天又写了一个C#调用webapi发送带json参数的post请求拿数据的方法,所以来到这里记录一下
/// <param name="url">请求地址</param>
/// <param name="jsonParas">请求体</param>
/// <param name="method">请求方法</param>
/// <param name="contentType"></param>
/// <returns></returns>
public string GetLoginJson(string url, string jsonParas, string method = "POST", string contentType = "application/json")
{
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse myResponse;
myRequest.Method = method;//请求方式
myRequest.ContentType = contentType;
//将Json字符串转化为字节
byte[] data = Encoding.UTF8.GetBytes(jsonParas);
//设置请求的ContentLength
myRequest.ContentLength = data.Length;
//发送请求,获得请求流
Stream writer;
try
{
writer = myRequest.GetRequestStream();//获取用于写入请求数据的Stream对象
}
catch (Exception)
{
writer = null;
Console.Write("连接服务器失败!");
}
//将请求参数写入流
writer.Write(data, 0, data.Length);
writer.Close();//关闭请求流
try
{
//获得响应流
myResponse = (HttpWebResponse)myRequest.GetResponse();
}
catch (WebException ex)
{
myResponse = ex.Response as HttpWebResponse;
}
Stream s = myResponse.GetResponseStream();
// Stream postData = Request.InputStream;
StreamReader sRead = new StreamReader(s, Encoding.UTF8);
string postContent = sRead.ReadToEnd();
sRead.Close();
return postContent;
}
这段代码是调用的时候传入请求地址和json串就行了
如果要添加请求头的话直接在myRequest下边加一行 myRequest.Headers.Add("id", 123123);,一般是请求时需要验证身份的密钥什么的
下边看如何调用
//请求并解析返回的json数据
public string GetSession()
{
string url = "http://xxxxx.com.cn/api/Login";
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("aaa", "123");
dic.Add("bbb", "123");
dic.Add("ccc", "123");
dic.Add("ddd", "123");
string JsonBody = JsonConvert.SerializeObject(dic);//转成json格式
string ResponseJson = GetLoginJson(url, JsonBody);//在这里调用的
//Models.FarEastoneGetSessionId.Root是我定义的一个实体类用来存放返回的json数据了
Models.FarEastoneGetSessionId.Root rt = JsonConvert.DeserializeObject<Models.FarEastoneGetSessionId.Root>(ResponseJson);
string id = rt.Content.sessionId;//取出实体类中的数据并输出
return id;
}
然后处理数据就行了
转载请注明出处
标签:webapi,string,C#,writer,dic,json,myRequest,请求 From: https://blog.51cto.com/u_16371710/9238079