Авторизация Retrofit 2

242
13 февраля 2018, 07:35

Добрый день помогите разобраться с кодом. Хочу получить данные с сервера в формате JSON. На сервере стоит авторизация. При попытки получить ответ от сервера получаю ошибку 401. Сам код

package com.ocean_shop.myapplication;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Base64;
import android.util.Log;
import java.io.IOException;
import java.util.List;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
import retrofit2.http.GET;
public class MainActivity extends AppCompatActivity {
    public static String LOG_TAG = "my_log";
    String username = "Пользовател";
    String password = "Пароль";
    public interface MessagesApi {
        @GET("http://SERVER/ocean_shop/odata/standard.odata/AccumulationRegister_%D0%9F%D1%80%D0%BE%D0%B4%D0%B0%D0%B6%D0%B8/Turnovers(StartPeriod=datetime'2018-02-06',%20EndPeriod=datetime'2018-02-07')?$format=json;odata=nometadata")
        Call<List<Message>> messages();
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
        httpClient.addInterceptor(new Interceptor() {


            @Override
            public okhttp3.Response intercept(Interceptor.Chain chain) throws IOException {
                Request request = chain.request();
                Request newRequest;
                newRequest = request.newBuilder()
                        .addHeader("Accept-Charset", "UTF-8")
                        .addHeader("Authorization", "Basic " + Base64.encodeToString((username + ":" + password).getBytes("UTF-8"), Base64.NO_WRAP))
                        .build();
                log("client " + "Basic " + Base64.encodeToString((username + ":" + password).getBytes("UTF-8"), Base64.NO_WRAP));
                return chain.proceed(newRequest);
            }
        });


        Retrofit retrofit = new Retrofit.Builder().baseUrl("http://SERVER/ocean_shop/odata/standard.odata/").addConverterFactory(GsonConverterFactory.create()).build();
        MessagesApi messagesApi = retrofit.create(MessagesApi.class);

        Call<List<Message>> messages = messagesApi.messages();
        messages.enqueue(new Callback<List<Message>>() {
            @Override
            public void onResponse(Call<List<Message>> call, Response<List<Message>> response) {
                if (response.isSuccessful()) {
                    log("response " + response.body().size());
                } else {
                    log("response headers " + response.headers());
                    log("response code " + response.code());
                }
            }
            @Override
            public void onFailure(Call<List<Message>> call, Throwable t) {
                log("failure " + t);
            }
        });
    }
    private void log(String s) {
        Log.d(LOG_TAG, s);
    }
}

Logcat

02-12 11:28:48.558 11080-11080/com.ocean_shop.myapplication D/my_log: response headers Cache-Control: private
                                                                      Content-Type: text/html; charset=utf-8
                                                                      Server: Microsoft-IIS/7.5
                                                                      WWW-Authenticate: Basic realm="1C:Enterprise 8.3"
                                                                      Date: Mon, 12 Feb 2018 11:28:48 GMT
                                                                      Content-Length: 6954
02-12 11:28:48.558 11080-11080/com.ocean_shop.myapplication D/my_log: response code 401
READ ALSO
Область определения для generic&#39;а

Область определения для generic'а

Подскажите как можно задать область определения типа generic'a при создании объекта?То есть в угловых скобках я могу вписать на пример только...

198
BluetoothLE как создать пару с сенсором, требующим пинкод

BluetoothLE как создать пару с сенсором, требующим пинкод

После сканирования получаю соединение с найденным приборомВсе стандартно: читаются сервисы и характеристики, посылается ответ и прибор...

136
Как получить результат из JavascriptExecutor.executeScript()?

Как получить результат из JavascriptExecutor.executeScript()?

Для загрузки страницы c Selenium используется вот такой код:

148
Jar с исходниками

Jar с исходниками

Когда я создаю library (то есть jar, который будет подключаться другим приложением), Maven компилирует все, а потом создаёт уже jar

144