android的图像接口,Android定制化图像接口示例代码

参考百度AI-SDK :https://github.com/Baidu-AIP/java-sdk

将网络模块换成了OKHTTP  ,JSON 用的 fastjson

注意OKHTTP:如果Mediatype 不是用的json 会自动被urlencode

public JSONObject basicMeterFramUrl( HashMap options) {

//将参数转为一个json

JSONObject jsonObject = new JSONObject();

if(null != options){

for (String s : options.keySet()) {

jsonObject.put(s,options.get(s));

}

}

RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8")

, jsonObject.toJSONString());

Request request = new Request.Builder().url(METER_FRAM_API_HOST)

.build();

//获取token

request = preOperation(request);

//组装路径,必须在url 中带token

String newUrl = request.url().toString();

if(!newUrl.endsWith("?")){

newUrl = newUrl+"?";

}

newUrl= newUrl+"access_token="+accessToken+"&aipSdk=java";

//复制一个request ,修改地址

request = request.newBuilder().url(newUrl)

.post(requestBody).build();

//post参数处理,这里目前没有用到

request =postOperation(request);

//发请求

return requestServer(request);

}

protected JSONObject requestServer(Request request) {

// 请求API

HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();

loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);

OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor(loggingInterceptor).build();

String resData = null;

Response response =null;

try {

response =okHttpClient.newCall(request).execute();

resData = response.body().string();

Integer status = response.code();

if (status.equals(200) && !resData.equals("")) {

try {

JSONObject res = JSON.parseObject(resData);

if (state.getState().equals(EAuthState.STATE_POSSIBLE_CLOUD_USER)) {

boolean cloudAuthState = res.containsKey("error_code")

|| res.getIntValue("error_code") != AipClientConst.IAM_ERROR_CODE;

state.transfer(cloudAuthState);

if (!cloudAuthState) {

return Util.getGeneralError(

AipClientConst.OPENAPI_NO_ACCESS_ERROR_CODE,

AipClientConst.OPENAPI_NO_ACCESS_ERROR_MSG);

}

}

return res;

} catch (JSONException e) {

return Util.getGeneralError(-1, resData);

}

}

else {

Log.w("Api",String.format("call failed! response status: %d, data: %s", status, resData));

return AipError.NET_TIMEOUT_ERROR.toJsonResult();

}

} catch (IOException e) {

e.printStackTrace();

return Util.getGeneralError(-1,e.getMessage());

}

}

//获取token 必须get 请求

public static JSONObject oauth(String apiKey, String secretKey, AipClientConfiguration config) {

try {

HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();

loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BASIC);

OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor(loggingInterceptor).build();

String getAccessTokenUrl = AipClientConst.OAUTH_URL

// 1. grant_type为固定参数

+ "?grant_type=client_credentials"

// 2. 官网获取的 API Key

+ "&client_id=" + apiKey

// 3. 官网获取的 Secret Key

+ "&client_secret=" + secretKey;

System.out.println("url="+getAccessTokenUrl);

//RequestBody requestBody = new FormBody.Builder()

// .add("grant_type","client_credentials")

// .add("client_id",apiKey)

// .add("client_secret",secretKey).build();

Request request = new Request.Builder().url(getAccessTokenUrl).get().build();

Response response = okHttpClient.newCall(request).execute();

if(response.isSuccessful()){

String result = response.body().string();

return JSON.parseObject(result);

}else{

return Util.getGeneralError(response.code(), "Server response code: " + response.code());

}

} catch (IOException e) {

e.printStackTrace();

}

return Util.getGeneralError(-1, "unknown error");

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值