Добрый день помогите разобраться с кодом. Хочу получить данные с сервера в формате 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
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Подскажите как можно задать область определения типа generic'a при создании объекта?То есть в угловых скобках я могу вписать на пример только...
После сканирования получаю соединение с найденным приборомВсе стандартно: читаются сервисы и характеристики, посылается ответ и прибор...
Для загрузки страницы c Selenium используется вот такой код:
Когда я создаю library (то есть jar, который будет подключаться другим приложением), Maven компилирует все, а потом создаёт уже jar