引言
最近公司交给我个任务,为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视情况而定,如果文中有不妥之处还请斧正。