首先,还望阅读本篇文章的,可以结合该项目:点我GitHub地址,进行查看。
我们引用了json自有类、java里自带的网络类、okhttp3,代码如下:
import android.util.Log;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.StandardCharsets;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
Huawei类有3样函数组成:CreateJsonToPost()、get(String url)、post()
使用protected,可以保护该函数只被类里调用即可。
protected String CreateJsonToPost() { ... }
protected String get(String url) { ... }
protected void post() { ... }
CreateJsonToPost()里,我们把获取IAM用户Token(使用密码)这一块所需的JSON,提取出来转成JSONObject这样组成,方便开发者填写以下信息:
//需要添加的IAM账号名、账号密码。想要获取IAM信息?点它即可→https://support.huaweicloud.com/api-iam/iam_17_0002.html
protected String JsonDomainName = "";
protected String JsonName = "";
protected String JsonPassword = "";
原本所填JSON信息的样式:
{
"auth": {
"identity": {
"methods": [
"password"
],
"password": {
"user": {
"domain": {
"name": "zzz"
},
"name": "zzz",
"password": "zzz"
}
}
},
"scope": {
"domain": {
"name": "zzz"
}
}
}
}
然后转义后写入Java变量的样式:
"{\"auth\":{\"identity\":{\"methods\":[\"password\"],\"password\":{\"user\":{\"domain\":{\"name\":\"******\"},\"name\":\"******\",\"password\":\"******\"}}},\"scope\":{\"domain\":{\"name\":\"******\"}}}}";
现在,我们交给了JSONObject来生成这样的样式:
JSONObject First = new JSONObject();
try {
JSONObject Auth = new JSONObject();
First.put("auth",Auth);
JSONObject Identity = new JSONObject();
Auth.put("identity",Identity);
JSONObject Password = new JSONObject();
Identity.put("password",Password);
JSONArray Methods = new JSONArray();
Methods.put("password");
Identity.put("methods",Methods);
JSONObject User = new JSONObject();
JSONObject UserDomain = new JSONObject();
User.put("domain",UserDomain);
UserDomain.put("name",JsonDomainName);
Password.put("user",User);
User.put("name",JsonName);
User.put("password",JsonPassword);
JSONObject Scope = new JSONObject();
Auth.put("scope",Scope);
JSONObject Domain = new JSONObject();
Scope.put("domain",Domain);
Domain.put("name",JsonDomainName);
} catch (JSONException e) {
e.printStackTrace();
}
return String.valueOf(First);
Get和Post,就是很正常的GET请求和POST请求了,GET请求得到设备数据,POST请求认证得到Token再GET。
但是,我们把这三个函数整合一起了,这样减少了主进程的性能损耗,更多的在图形界面的信息展示上这样会更好。