Я работаю над приложением, которое отправляет данные в концентратор событий azure. Это похоже на блоге здесь: http://sreesharp.com/send-events-from-android-app-to-microsoft-azure-event-hubs/Azure Event Hub авторизация с Android
Однако я обновил код подключения использовать OkHttp:
public void sendMessageOkHttp(String dataPacket, String connectionString, String sasKey){
// Instantiate the OkHttp Client
OkHttpClient client = new OkHttpClient();
// Create the body of the message to be send
RequestBody formBody = new FormBody.Builder()
.add("message", dataPacket)
.build();
// Now create the request and post it
Request request = new Request.Builder()
.header("Authorization", sasKey)
.url(connectionString)
.post(formBody)
.build();
Log.i(TAG,"about to send message");
// Now try to send the message
try {
Log.i(TAG,"sending message....");
Response response = client.newCall(request).execute();
Log.i(TAG,"message sent");
Log.i("Azure Response",String.valueOf(response.message()));
// Do something with the response.
} catch (IOException e) {
e.printStackTrace();
}
}
Однако это возвращает ответ от концентратора событий «Несанкционированное». Используемый мной ключ sas предназначен для политики общего доступа, которую я создал с разрешениями на отправку и прослушивание. Это первичный ключ.
Что я здесь делаю неправильно? Документация Azure на самом деле не помогает мне в этом случае, потому что она сосредоточена на использовании библиотек Azure Java, которые не поддерживают Android (например, они требуют Java 1.8)