API调用类编写

作者: 05b0963bb480 | 来源:发表于2018-12-08 06:46 被阅读43次

    目前,各大电商平台都有各自的开放平台,基本上都有开放的API来提供给开发者调用。基本上提供了目前主流开发语言的sdk。但是,也有一些电商平台,没有提供完善的SDK可以调用,这时,也只能通过他们提供的api来调用相应的接口,来实现我们需要的功能了。
    本文以调用唯品会API为例,整理分享如何正确调用API。

    调用开放平台API

    1. 学习了解开发平台API接口;
    2. 了解API接口调用形式;
    3. 编写统一的接口调用类。

    如何编写接口调用类

    通过熟悉开发平台的接口,我们可以明确所调用接口的输入参数和输出参数。可以将接口调用的固定参数作为调用类的默认构造函数来处理。如接口配置地址、商户ID等参数。如下图:

    默认构造函数

    从上面的构造函数里,可以看出,构造函数传入了apiname参数,就是定义的api名称,在调用不同API时,同步传入API名称即可。
    下面是获取订单基本信息接口所需要的XML文件,我们使用下面的方法来处理:


    获取订单基本信息的xml

    接下来,我们来定义一个公共方法来统一调用API接口,方法定义如下:


    GetServerData

    核心调用类 HttpPost,将接口调用需要的数据Post提交到API服务地址,接口将返回数据给客户端,我们本地将会获取到订单的基本信息。

    CookieContainer cookie = new CookieContainer();
    private string HttpPost(string Url, string postDataStr)
    {
    string retString = "";
    while (true)
    {
    Stream myResponseStream = null;
    StreamReader myStreamReader = null;
    try
    {
    byte[] byteArray = Encoding.UTF8.GetBytes(postDataStr);
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
    request.Method = "POST";
    request.ContentType = "application/x-www-form-urlencoded";
    request.ContentLength = Encoding.UTF8.GetByteCount(postDataStr);
    request.CookieContainer = cookie;
    request.Timeout = 6000000;
    request.KeepAlive = true;
    request.ServicePoint.ConnectionLimit = 1024;
    Stream myRequestStream = request.GetRequestStream();
    myRequestStream.Write(byteArray, 0, byteArray.Length);
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    if (response.StatusCode != httptatusCode.OK)
    {
    continue;
    }
    response.Cookies = cookie.GetCookies(response.ResponseUri);
    myResponseStream = response.GetResponseStream();
    myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
    retString = myStreamReader.ReadToEnd();
    break;
    }
    catch (WebException e)
    {
    e.StackTrace.ToString();
    System.Diagnostics.Trace.WriteLine(e.Message);
    WriteSysLog.Log("servererr", e.Message + "");
    if (true)
    continue;
    }
    finally
    {
    myStreamReader.Close();
    myResponseStream.Close();
    }
    }
    return retString;
    }
    

    这样的话,通过这个统一的接口调用类,我们就可以调用其他的api接口了,只要接口调用所需的数据参数准确无误,都会返回正确的结果的。

    相关文章

      网友评论

        本文标题:API调用类编写

        本文链接:https://www.haomeiwen.com/subject/dwalcqtx.html