API文档 > 如何调用平台接口
为了能够正常的使用应用支撑平台的相关接口,需要如下的流程:
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)调用接口成功或失败后,将会获取到接口的返回值,具体返回值的含义请参见第六章。
调用应用支撑平台的API接口时,即是API调用端(即用户调用接口运行的程序)调用API服务器端的数据(即RC2P提供的服务器,可调用应用支撑平台上的数据)时的交互流程。
首先介绍概念:
appSecret:应用密钥,也是应用支撑平台颁发给客户端应用的,不可对外公开,不需要在URL地址中进行传递,应用商家需注意保密,调用API的时候需要使用。
通过上面的介绍可知,如果要想调用应用支撑平台的API接口服务,首要做的事情就是联系应用支撑平台,申请相关的appid和appSecret,然后保存到本地,在调用接口的时候使用,否则将无权限进行接口的调用。
针对每个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&
使用狐火进行测试的话,需要安装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.填入相关的参数值后进行调用
综上即可。
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
|