1.前言
本文旨在介绍MAC Android SDK的接入步骤和使用方法
2.安装
2.1 配置maven仓库
build.gradle添加阿里云maven仓库
allprojects {
repositories {
maven {
url "http://maven.aliyun.com/nexus/content/repositories/releases"
}
}
}
2.2 配置gradle依赖dependencies {
compile 'com.aliyun.ams:alicloud-android-mac:1.0.0'
}
目前MAC android sdk只支持arm架构,建议用真机进行测试
2.3 Manifest配置
2.3.1 添加组件<service
android:name="anetwork.channel.aidl.NetworkService"
android:exported="false">
<intent-filter>
<action android:name="anetwork.channel.aidl.IRemoteNetworkGetter" />
</intent-filter>
</service>
2.3.2 添加权限<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
2.4 Proguard配置-keep class com.aliyun.ams.** {*;}
-keep public class org.android.spdy.** {*;}
-dontwarn com.alibaba.**
-dontwarn com.taobao.**
-dontwarn anetwork.channel.**
-dontwarn org.android.**
3.支持的版本
mac sdk支持的android最小版本为10
minSdkVersion 10
4.API
public final class MacClient {
// 用于MAC sdk的初始化
public static void init(MacConfig config);
// 根据输入的Request获得一个Call对象
public Call newCall(Request request);
// MacClient的Builder
public static final class Builder {
public MacClient build();
}
}
public final class MacConfig {
// MacConfig的Builder
public static final class Builder {
// 设置Context
public Builder context(Context context);
// 设置appKey
public Builder appKey(String appKey);
// 设置appSecret
public Builder appSecret(String appSecret);
// 创建MacConfig对象
public MacConfig build();
}
}
public final class Request {
// 返回URL
public String url();
// 返回method,默认为Get
public String method();
// 返回请求头部
public Map<String, String> headers();
// 返回请求body
public byte[] body();
// Request的Builder
public static final class Builder {
// 设置URL
public Builder url(String url);
// 设置method
public Builder method(String method, byte[] body);
// 设置header
public Builder headers(Map<String, String> headers);
// 添加header
public Builder addHeader(String name, String value);
// 移除header
public Builder removeHeader(String name);
// 构建Request对象
public Request build();
}
}
public final class Response {
// 返回状态码
public int code();
// 返回响应头部
public Map<String, String> headers();
// 返回响应body
public byte[] body();
// 返回请求是否成功
public boolean isSuccessful();
}
public interface Callback {
// 正常时返回Response
void onResponse(Call call, Response response);
// 异常时返回MacException
void onFailure(Call call, MacException exception);
}
public class DemoApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
}
@Override
public void onCreate() {
super.onCreate();
// 初始化MacConfig
MacConfig config = new MacConfig.Builder()
.context(this)
.appKey(APP_KEY)
.appSecret(APP_SECRET)
.build();
MacClient.init(config);
}
}
// 构造MacClient对象
MacClient client = new MacClient.Builder().build();
Request req = new Request.Builder()
.url(url)
.headers(headers)
.addHeader("User-Agent", "Your UA")
.method("POST", body)
.build();
new Thread(new Runnable() {
@Override
public void run() {
Response rsp = null;
try {
rsp = client.newCall(req).execute();
} catch (MacException e) {
e.printStackTrace();
}
if (rsp != null) {
int statusCode = rsp.code();
byte[] data = rsp.body();
Log.d(TAG, "[DemoActivity] execute statusCode: " + statusCode + " data: " + new String(data));
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
client.newCall(req).enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
int statusCode = response.code();
byte[] data = response.body();
Log.d(TAG, "[DemoActivity] onResponse statusCode: " + statusCode + " data: " + new String(data));
}
@Override
public void onFailure(Call call, MacException e) {
Log.d(TAG, e.getMessage(), e);
}
});
}
}).start();
[DHandler] url: https://xxx/xxx.html AccSuccess: 1 reqSuccess: 1
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。