2017-02-02 2 views
0

Я работаю над приложением, которое отправляет данные в концентратор событий 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)

ответ