最近公司交给我个任务,为IOS移动端写接口。现有公司的软件是ASP.NET做的,现在想把某些功能移植到IOS APP上。大多数对外接口会实现webservice方法,但经理却让用http接口来进行交互。
怀着一颗好奇心了解了一下webservice和httpservice的区别。
webservice是使用soap协议得到想要的东西,soap请求是HTTP POST的一个专用版本,遵循一种特殊的xml消息格式Content-type设置为:text/xml任何数据都可以xml化。webservice相比httpservice能处理些更加复杂的数据类型。如果在后台调用一个其它应用的服务,这个时候,必须要用webService的方式来调用。
httpsevice通过post和get得到想要的东西。在处理数据上HTTPService效率较高。当调用一个本服务的时候,不涉及跨域的问题,可以使用HttpService的方式。
相比于httpservice,webservice接口中实现的方法和要求参数一目了然;不用担心大小写问题,不用担心中文urlencode问题,代码中不用多次声明认证(账号、密码)参数;传递参数可以为数组、对象等。但是由于它由于xml解析,速度可能会有所减低。
当然,现在的开放平台都是用的HTTP实现的,webservice完全可以被httpservice替代。
基于httpservice协议一个提供接口的登录例子(Web层):
以下接口通过request获取参数,然后通过调B层,B层调D层进行返回,提供json字符串参数。
using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace UTRWebService { public partial class Problemdetail : System.Web.UI.Page { BLL.ProblemDataList bll = new BLL.ProblemDataList(); protected void Page_Load(object sender, EventArgs e) { Bing(); } public void Bing() { try { string problem = DataSwitch.ConvertObjectToString(Request["problem"]); if (!string.IsNullOrEmpty(problem)) { StringBuilder str = new StringBuilder(); DataTable problemdetail = bll.getproblemdetail(problem); IList<Model.ProblemDerail> ProblemContent = bll.getproblemContent(problem); if (problemdetail.Rows.Count > 0) { string strl = problemdetail.Rows[0]["ProblemDescribe"].ToString(); string regexstr = @"<[^>]*>"; //去除所有的标签 strl = Regex.Replace(strl, regexstr, string.Empty, RegexOptions.IgnoreCase); str.Append("{ \"id\":" + problemdetail.Rows[0]["ProblemID"] + ",\"zhaiyao\":\"" + problemdetail.Rows[0]["Title"] + "\",\"fxsj\":\"" + problemdetail.Rows[0]["CreateTime"].ToString() + "\",\"jjcd\":\"" + problemdetail.Rows[0]["PriorityName"].ToString() + "\",\"wtmx\":\"" + strl + "\",\"lines\":" + ToJson.toJson(ProblemContent) + "}"); Response.Write(str.ToString()); } else { string result = "暂无数据"; Response.Write("{\"success\":\"" + result + "\"}"); } } else { string result = "暂无数据"; Response.Write("{\"success\":\"" + result + "\"}"); } //} //else //{ // // List<Model.ProblemDataList> ProblemList = new List<Model.ProblemDataList>(); // string result = "false"; // Response.Write("{\"success\":\"" + result + "\"}"); // //Response.Write(ToJson.toJson(ProblemList)); //} } catch (Exception ex) { string result = "false"; Response.Write("{\"success\":\"" + result + "\"}"); } } } }
向移动端或是PC端提供接口,看了这些,相信读者对其有了一定的了解,用WebService还是HttpService视情况而定,如果文中有不妥之处还请斧正。