API文档 > 如何调用平台接口


 

1. 相关流程
 
为了能够正常的使用应用支撑平台的相关接口,需要如下的流程:
1)通读本文档,了解rest接口的形式及调用方法等。
2)向应用支撑平台的相关人员申请appid及appsecret。(5.3节详细介绍)
3)根据第四章的相关服务接口列表,选择自己关心的接口。注意此处,不同的接口的参数形式不同,包括xml的参数形式,如“账户资源”的“updateUser”接口;string的参数形式,如“账户资源”的“validateUser”接口等。
针对参数形式的不同,客户端调用的方式也不尽相同。
也分为不同的调用方式, java客户端调用或ajax页面调用。
以上的具体调用方式请参见附带的“rc2p-Client”demo工程。
4)在调用接口的过程中,需要对调用的URL进行加密,加密需要在第2步骤中申请的appid和appsecret值,具体加密方式请参见5.4节。
5)可以直接在java客户端进行调用测试,或者通过xfire的组件,或者soapUI工具进行接口测试,具体请参见5.2章节。
6)调用接口成功或失败后,将会获取到接口的返回值,具体返回值的含义请参见第六章。
 
2. 接口调用原理
 
调用应用支撑平台的API接口时,即是API调用端(即用户调用接口运行的程序)调用API服务器端的数据(即RC2P提供的服务器,可调用应用支撑平台上的数据)时的交互流程。
 
3. 申请调用接口使用权限
 
首先介绍概念:
appSecret:应用密钥,也是应用支撑平台颁发给客户端应用的,不可对外公开,不需要在URL地址中进行传递,应用商家需注意保密,调用API的时候需要使用。
通过上面的介绍可知,如果要想调用应用支撑平台的API接口服务,首要做的事情就是联系应用支撑平台,申请相关的appid和appSecret,然后保存到本地,在调用接口的时候使用,否则将无权限进行接口的调用。
 
4. 如何加密
 
针对每个API接口,都可能拼出不同的URL,针对该URL,需要调用应用支撑平台提供的rc2p-utils.jar 实现加密,并将加密的值作为access_token参数的值。具体例子如下:
客户端调用接口的URL地址为:
http://open.sxsme.com/members/accounts/users/validateUser?loginName=*&appid=*&version=*access_token=AAAA
亦或
https://open.sxsme.com/members/accounts/users/validateUser?loginName=*&appid=*&version=*access_token=AAAA
此时需要调用rc2p-utils.jar中的getAccessToken(String appSecret,String url)方法获取加密值,取得加密值如AAAA后,调用接口的最终URL为:
http://open.sxsme.com/members/accounts/users/validateUser?loginName=*&appid=*&version=*&access_token=AAAA
亦或
https://open.sxsme.com/members/accounts/users/validateUser?loginName=*&appid=*version=*&access_token=AAAA&
 
5. 如何进行接口测试
 
5.1 通过firefox的相关插件
使用狐火进行测试的话,需要安装Poster插件,如下图所示:
成功安装后,会在火狐的“工具”中出现。 点击“Poster”即出现如下的测试界面, 如下图,输入调用接口的URL地址信息,点击“GET”后即出现调用结果的界面:
 
5.2 通过SoapUI进行测试
比如调用的接口URL为如下:
http://open.sxsme.com/members/accounts/users/validateUser?appid=10002&loginName=admin1&version=*&access_token=C4250883DFC9F83E7C6613D39918797C
SoapUI既可以进行soap协议的webservice测试,又可以进行基于rest的 webservice的接口测试。以下给予截图展示:
1.创建rest测试工程
2.创建一个 Service
3.创建一个rest 资源
4.创建该资源的一个方法
5.创建成功
6.填入相关的参数值后进行调用
综上即可。
 
6. 如何通过java代码进行客户端接口调用
 
Rest webservice与传统的soap webservice的调用方式不同。以下举例

 

import static junit.framework.Assert.assertTrue;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.StringRequestEntity;
import org.junit.Test;
public class TestCase {
 @Test
 public void testAddPerson() throws Exception {
        String url = String.format("http://localhost:8080/RestDemo/services/test/addPerson");
        PostMethod post = new PostMethod(url);
        post.setRequestEntity(new StringRequestEntity(
        "111aaass","application/xml", "utf-8"));
        int responseCode = new HttpClient().executeMethod(post);
        String text = post.getResponseBodyAsString();
        System.out.println("返回结果:"+ new String(text.getBytes("iso8859-1"), "UTF-8"));
        if (responseCode == 200) {
            System.out.println("调用成功!");
            assertTrue(true);
        } else {
            System.out.println("调用失败!");
            assertTrue(false);
        }
 }
 @Test
 public void testGetPerson() throws Exception {
        String url = String.format("http://localhost:8080/RestDemo/services/test");
        GetMethod get = new GetMethod(url);
        get.setQueryString("id=asfasf");
        int responseCode = new HttpClient().executeMethod(get);
        String text = get.getResponseBodyAsString();
        System.out.println("返回结果:"+ new String(text.getBytes("iso8859-1"), "UTF-8"));
        if (responseCode == 200) {
            System.out.println("调用成功!");
            assertTrue(true);
        } else {
            System.out.println("调用失败!");
            assertTrue(false);
        }
    }
}

 

以上的调用,需要应用系统引入如下的jar依赖包(版本要求不太高,根据实际项目决定)。

 

commons-codec-1.6.jar                 
commons-httpclient-3.1-osgi.jar          
commons-logging-1.0.4.jar