Я делаю вызовы API GET / PUT / POST из приложения android. Я искал способ зашифровать параметры и их значения перед их отправкой и расшифровать их на уровне приложений Slim.
Я думаю о шифровании Google KMS симметрии c. Так что вроде разобрался. Итак, мой фактический вопрос заключается в следующем.
Как мне зашифровать параметры и их значения в okhttp ?. Так что если вызов get - что-то вроде этого.
https://example.com/stack/api/v3/getprofile?userid=123&country=jp&priority=1
ДОЛЖНО БЫТЬ
https://example.com/stack/api/v3/getprofile?scrambledtext
Как мне расшифровать на уровне приложения SLIM.
https://example.com/stack/api/v3/getprofile?scrambledtext
ДОЛЖНО СТАТЬ (ДО ТОГО, КАК ЕГО ОБРАЩАЕТСЯ СООБЩЕННЫМ МАРШРУТ)
https://example.com/stack/api/v3/getprofile?userid=123&country=jp&priority=1
Приведенный ниже код даст вам представление о # 1.
String sendBack = "";
boolean isFirstQueryParam = true;
String paramString = "";
OkHttpClient client = new OkHttpClient();
Response response;
Request request = null;
//Only for NON-GETS
RequestBody requestBody = null;
//Add all the headers
Request.Builder requestBuilder = new Request.Builder();
addHeaders(requestBuilder, headers);
if (!method.toString().trim().equals("GET")) {
requestBuilder.url(GenUtil.getApiEndPoint(context) + route);
//Add all the POST parameters
FormBody.Builder formBodyBuilder = new FormBody.Builder();
// Iterate through the bundle and set them params
if (params != null && !params.isEmpty()) {
for (String key : params.keySet()) {
formBodyBuilder.addEncoded(key, params.getString(key));
}
}
requestBody = formBodyBuilder.build();
if (method.toString().trim().equals("PUT")) {
requestBuilder.put(requestBody);
} else if (method.toString().trim().equals("POST")) {
requestBuilder.post(requestBody);
} else if (method.toString().trim().equals("DELETE")) {
requestBuilder.delete(requestBody);
}
request = requestBuilder.build();
} else {
// Iterate through the bundle and set them params
if (params != null && !params.isEmpty()) {
for (String key : params.keySet()) {
if (isFirstQueryParam) {
paramString = paramString + "?" + key + "=" + params.getString(key);
} else {
paramString = paramString + "&" + key + "=" + params.getString(key);
}
isFirstQueryParam = false;
}
}
//*** I COULD PROBABLY do ENCRYPt(paramString) FOR THIS - THE QUESTION
//*** HOW DO I POST FOR NON-GET METHODS
requestBuilder.url(GenUtil.getApiEndPoint(context) + route + paramString);
request = requestBuilder.build();
}
try {
response = client.newCall(request).execute();
sendBack = response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
return sendBack;