Я пытаюсь получить вложения от маяков, зарегистрированных в моем проекте консоли разработчика Google с API_KEY.Как описано в Proximity Beacon API, запрос можно сделать, просто используя ключ API и отправив тело в запросе POST.Я сделал все, что показано ниже.1) Метод выполнения http-запроса:
public String getAttachments(String beaconname, String account,String data) {
//beacon name = beacons/3!....
//acountname = emailused;
//data = json body
String token = null;
String SCOPE = "oauth2:https://www.googleapis.com/auth/userlocation.beacon.registry";
String result = null;
try {
token = GoogleAuthUtil.getToken(getActivity(), account, SCOPE);
Log.w("Token", token);
} catch (IOException e) {
e.printStackTrace();
} catch (GoogleAuthException e) {
e.printStackTrace();
}
BufferedReader bufferedReader = null;
HttpURLConnection httpURLConnection = null;
try {
URL url = new URL("https://proximitybeacon.googleapis.com/v1beta1/beaconinfo:getforobserved?key="+API_KEY);
Log.w("URL", url.toString());
httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setRequestProperty("Content-Type", "application/json; charset=utf-8");
httpURLConnection.setRequestProperty("Accept","application/json");
httpURLConnection.setRequestProperty("Authorization", "Bearer " + token);
httpURLConnection.setDoOutput(true);
httpURLConnection.setDoInput(true);
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(httpURLConnection.getOutputStream(),"UTF-8"));
writer.write(data);
writer.flush();
writer.close();
Log.w("data sent",data);
int resposnecode = httpURLConnection.getResponseCode();
String responsemessage = httpURLConnection.getResponseMessage();
Log.e("Response code", resposnecode + "");
Log.e("Response message",responsemessage);
bufferedReader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream(),"UTF-8"));
String line = null;
StringBuilder builder = new StringBuilder();
while ((line = bufferedReader.readLine()) != null) {
builder.append(line);
}
result = builder.toString();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
httpURLConnection.disconnect();
bufferedReader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return result;
}
Тело (параметр данных, использованный в вышеуказанном методе), которое я отправляю с этим почтовым запросом, выглядит так:
{ "observations":[
{
"advertisedId":{
"type":"EDDYSTONE",
"id":"vv8QICkg/0QBAwASb9z/Ug=="
},
"timestampMs":"2018-11-20T10:31:02.972000000Z"
}],"namespacedTypes":[
"true-bla-020202/Bye"]}
Я получаюНеверный запрос с кодом 400 в качестве ответа.У маяка есть два приложения в приборной панели маяка с пространством имен, упомянутым в теле сообщения POST.Я пытаюсь это изо дня в день безуспешно.