C#调用webapi发送带json参数的post请求
嗯。。很久不更新,因为跳槽新公司了,要学的东西太多太忙了。也没时间记录,今天又写了一个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; }
然后处理数据就行了
转载请注明出处