文档首页> > 开发指南> APP认证> Java

Java

更新时间: 2019-02-03 12:24

准备环境

获取SDK

请访问https://obs.cn-north-1.myhwclouds.com/apig-sdk/ApiGateway-java-sdk.zip下载SDK。

下载“ApiGateway-java-sdk.zip”压缩包,解压后目录结构如下:

名称

说明

libs\okhttp-3.11.0.jar

SDK包

libs\okio-1.15.0.jar

libs\commons-codec-1.11.jar

libs\commons-logging-1.2.jar

libs\httpclient-4.5.5.jar

libs\httpcore-4.4.9.jar

libs\java-sdk-core-3.0.8.jar

libs\joda-time-2.9.9.jar

src\com\apig\sdk\demo\Main.java

示例代码

src\com\apig\sdk\demo\OkHttpDemo.java

src\com\apig\sdk\demo\LargeFileUploadDemo.java

.classpath

Java工程配置文件

.project

说明:

以“jar”结尾的文件版本可能与当前不一致,请以实际为准。

导入工程

  1. 打开Eclipse,选择菜单“File > Import”。

    弹出“Import”对话框。

  2. 选择“General > Existing Projects into Workspace”,单击“Next”。

    弹出“Import Projects”对话框。

  3. 单击“Browse”,在弹出的对话框中选择解压后的SDK路径。

  4. 单击“Finish”,完成工程导入。

    最终工程目录结构如下:

    “Main.java”为示例代码,请根据实际情况修改参数后使用。具体代码说明请参考API调用

新建工程

  1. 打开Eclipse,新建一个Java Project,自定义“Project name”,以“java-sdk-demo”为例。其他参数保持默认,单击“Finish”。

  2. 导入API Gateway Java SDK的“jar”包。

    1. 右键单击新建的工程“java-sdk-demo”,选择“Build Path > Add External Archives”。

    2. 选择SDK中“java\libs”目录下所有以“jar”结尾的文件。

    3. 单击“打开”。

  3. 新建“Package”及“Main”文件。

    1. 右键单击“src”,选择“New > Package”。

    2. 在“Name”中输入“com.apig.sdk.demo”。

    3. 单击“Finish”。

      完成“Package”的创建。

    4. 右键单击“com.apig.sdk.demo”,选择“New > Class”。

    5. 在“Name”中输入“Main”,勾选“public static void main(String[] args)”。

    6. 单击“Finish”。

      完成“Main”文件的创建。

  4. 完成工程创建后,最终目录结构如下。

    “Main.java”无法直接使用,请根据实际情况参考API调用输入所需代码。

API调用

说明:
  • 示例演示如何访问发布的API。
  • 租户需要在API网关的管理控制台自行创建和发布一个API,可以选择Mock模式。获取到创建及发布API的步骤请参考《API网关用户指南》。
  • 示例API的后端为打桩的HTTP服务,此后端返回一个“200”响应码及“hello apig”消息体。
  1. 在Main.java中加入以下引用。

    import java.io.IOException;
    import javax.net.ssl.SSLContext;
    
    import org.apache.http.Header;
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.methods.HttpRequestBase;
    import org.apache.http.conn.ssl.AllowAllHostnameVerifier;
    import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
    import org.apache.http.conn.ssl.SSLContexts;
    import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
    import org.apache.http.impl.client.CloseableHttpClient; 
    import org.apache.http.impl.client.HttpClients; 
    import org.apache.http.util.EntityUtils; 
    
    import com.cloud.apigateway.sdk.utils.Client; 
    import com.cloud.apigateway.sdk.utils.Request;

  2. 创建request,过程中需要用到如下参数:

    • AppKey:根据认证前准备获取。根据实际情况填写,示例代码使用“4f5f626b-073f-402f-a1e0-e52171c6100c”作为样例。
    • AppSecrect:根据认证前准备获取。根据实际情况填写,示例代码使用“******”作为样例。
    • Method:请求的方法名。根据API实际情况填写,示例代码使用“POST”作为样例。
    • url:请求的url,不包含QueryString及fragment部分。域名部分请使用API所在的分组绑定的您自己的独立域名或上架云市场时申请云市场颁发的域名。示例代码使用“http://c967a237-cd6c-470e-906f-a8655461897e.apigw.cn-north-1.huaweicloud.com/java-sdk”作为样例。
    • queryString: url携带参数的部分,根据API实际情况填写。支持的字符集为[0-9a-zA-Z./;[]\-=~#%^&_+: "]。示例代码使用“name=value”作为样例。
    • header:请求的头域。根据API实际情况填写,不支持中文。示例代码使用“Content-Type:text/plain”作为样例。如果API发布到非RELEASE环境时,需要增加自定义的环境名称,示例代码使用“x-stage:publish_env_name”作为样例。
    • body:请求的正文。根据API实际情况填写,示例代码使用“demo”作为样例。

    样例代码如下:

            Request request = new Request();
            try
            {
                request.setAppKey("4f5f626b-073f-402f-a1e0-e52171c6100c"); //创建应用时得到
                request.setAppSecrect("*****"); //创建应用时得到
                request.setMethod("POST");
                request.setUrl("http://c967a237-cd6c-470e-906f-a8655461897e.apigw.cn-north-1.huaweicloud.com/java-sdk");
                 //url地址在创建API分组时得到
                request.addQueryStringParam("name", "value");
                request.addHeader("Content-Type", "text/plain");
                //request.addHeader("x-stage", "publish_env_name"); //如果API发布到非RELEASE环境,需要增加自定义的环境名称
                request.setBody("demo");
            } catch (Exception e)
            {
                e.printStackTrace();
                return;
            }

  3. 对请求进行签名、访问API并打印结果:

    样例代码如下:
            CloseableHttpClient client = null;
            try
            {
                HttpRequestBase signedRequest = Client.sign(request);
    
                SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null, new TrustSelfSignedStrategy()).useTLS().build();
                SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory(sslContext, new AllowAllHostnameVerifier());
                client = HttpClients.custom().setSSLSocketFactory(sslSocketFactory).build();    
                HttpResponse response = client.execute(signedRequest);
                System.out.println(response.getStatusLine().toString());
                Header[] resHeaders = response.getAllHeaders();
                for (Header h : resHeaders)
                {
                    System.out.println(h.getName() + ":" + h.getValue());
                }
                HttpEntity resEntity = response.getEntity();
                if (resEntity != null)
                {
                    System.out.println(System.getProperty("line.separator") + EntityUtils.toString(resEntity, "UTF-8"));
                }
    
            } catch (Exception e)
            {
                e.printStackTrace();
            } finally
            {
                try
                {
                    if (client != null)
                    {
                        client.close();
                    }
                } catch (IOException e)
                {
                    e.printStackTrace();
                }
            }

  4. 右键单击“Main.java”,选择“Run As > Java Application”。

    运行工程测试代码。

  5. 在“Console”页签,查看运行结果。

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

在文档使用中是否遇到以下问题







请至少选择或填写一项反馈信息

字符长度不能超过100

反馈内容不能为空!

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区