赞
踩
1、restClient类
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Web; namespace Task10WebApi { public class RestClient { /// <summary> /// 请求服务器地址 /// </summary> private string BaseUri; public RestClient(string baseUri) { this.BaseUri = baseUri; } #region Get请求 public string Get(string uri) { //先根据用户请求的uri构造请求地址 string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri); //创建Web访问对 象 HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl); //通过Web访问对象获取响应内容 HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse(); //通过响应内容流创建StreamReader对象,因为StreamReader更高级更快 StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); //string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//解决编码问题 string returnXml = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾 reader.Close(); myResponse.Close(); return returnXml; } #endregion #region Post请求 public string Post(string data, string uri) { //先根据用户请求的uri构造请求地址 string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri); //创建Web访问对象 HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl); //数据转成“UTF-8”的字节流 byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data); myRequest.Method = "POST"; myRequest.ContentLength = buf.Length; myRequest.ContentType = "application/json"; myRequest.MaximumAutomaticRedirections = 1; myRequest.AllowAutoRedirect = true; //发送请求 Stream stream = myRequest.GetRequestStream(); stream.Write(buf, 0, buf.Length); stream.Close(); //获取接口返回值 //通过Web访问对象获取响应内容 HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse(); //通过响应内容流创建StreamReader对象,因为StreamReader更高级更快 StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); //string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//解决编码问题 string returnXml = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾 reader.Close(); myResponse.Close(); return returnXml; } #endregion #region Put请求 public string Put(string data, string uri) { //先根据用户请求的uri构造请求地址 string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri); //创建Web访问对象 HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl); //把用户传过来的数据转成“UTF-8”的字节流 byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data); myRequest.Method = "PUT"; myRequest.ContentLength = buf.Length; myRequest.ContentType = "application/json"; myRequest.MaximumAutomaticRedirections = 1; myRequest.AllowAutoRedirect = true; //发送请求 Stream stream = myRequest.GetRequestStream(); stream.Write(buf, 0, buf.Length); stream.Close(); //获取接口返回值 //通过Web访问对象获取响应内容 HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse(); //通过响应内容流创建StreamReader对象,因为StreamReader更高级更快 StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); //string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//解决编码问题 string returnXml = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾 reader.Close(); myResponse.Close(); return returnXml; } #endregion #region Delete请求 public string Delete(string data, string uri) { //先根据用户请求的uri构造请求地址 string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri); //创建Web访问对象 HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl); //把用户传过来的数据转成“UTF-8”的字节流 byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data); myRequest.Method = "DELETE"; myRequest.ContentLength = buf.Length; myRequest.ContentType = "application/json"; myRequest.MaximumAutomaticRedirections = 1; myRequest.AllowAutoRedirect = true; //发送请求 Stream stream = myRequest.GetRequestStream(); stream.Write(buf, 0, buf.Length); stream.Close(); //获取接口返回值 //通过Web访问对象获取响应内容 HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse(); //通过响应内容流创建StreamReader对象,因为StreamReader更高级更快 StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); //string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//解决编码问题 string returnXml = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾 reader.Close(); myResponse.Close(); return returnXml; } #endregion } }
2、调用示例
1)、webconfig配置
<appSettings>
<!--WebApi访问地址-->
<add key="ProjectFlowMangement10WebApi" value="http://localhost:1723" />
</appSettings>
3)、实例化RestClient类,传入webApi接口地址 参数,如下
public RestClient _ProjectFlowMangement10WebApi = new RestClient(ConfigurationManager.AppSettings["ProjectFlowMangement10WebApi"]);
4)、调用方法示例
public bool SaveProjectApprovalBusinessInfo(SaveWorkFlowDO _SaveWorkFlowDO) { SystemRunLogDTO systemRunLogDTO = new SystemRunLogDTO(ControllerName); systemRunLogDTO.voidName = "SaveProjectApprovalInfo"; systemRunLogDTO.logDesc = "保存项目立项业务数据"; BillBaseDTO _bd = new BillBaseDTO(); JObject _jobj = null; bool _result = false; try { string jsonStr = JsonConvert.SerializeObject(_SaveWorkFlowDO); _jobj = JsonConvert.DeserializeObject<JObject>(_ProjectFlowMangement10WebApi.Post(jsonStr, "api/CusSaveProjectFlow/SaveProjectApprovalInfo")); if (_jobj != null && _jobj["resultStatus"].ToString() == "0") { _result = true; _wl.WriteSuccessLog(systemRunLogDTO, string.Format("执行成功,flowId:{0}", _bd.BillWorkflowId)); } else { _wl.WriteErrorLog(systemRunLogDTO, string.Format("执行失败,flowId:{0}", _bd.BillWorkflowId), 1); } } catch (Exception ex) { _wl.WriteErrorLog(systemRunLogDTO, string.Format("执行失败,msg:{0}", ex.Message), 2); } return _result; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。