2015-10-06 3 views
0

Я работал над проектом Android (Android Studio 1.4). Я хочу подключиться к моему серверу Apache (не REST API), чтобы получать от него данные. important ВНИМАНИЕ. Я сделал те же запросы на мой сервер для проекта SWIFT iOS, я успешно получил запрос POST/GET, поэтому сервер настроен и работает хорошо. Я хочу сделать то же самое для Android. Bellow код:Android: Модернизация + RxJava отправляет запрос POST на локальный сервер. Я получаю - retrofit.HttpException: HTTP 404 не найден.

1) My Service.proto файл. Я использовал protobuf между моим клиентом и сервером.

option java_outer_classname = "Service"; 
message BaseModelRequestProtobufDTO 
{ 
    required string name = 1; 
    required string model = 2; 
} 
message BaseModelResponseProtobufDTO 
{ 
    required string response = 1; 
} 

2) Использование библиотеки 'com.squareup.wire: провод-среда: 1.8.0', У меня есть Java-классы - BaseModelRequestProtobufDTO и BaseModelResponseProtobufDTO

3) Мои Переоборудование интерфейс:

public interface RetrofitService { 

    public interface RetrofitService 
{ 
    @Headers({"Cookie: bank=*************", "Content-Type: **************"}) 
    @POST("/baseMethod") 
    Observable{BaseModelResponseProtobufDTO} baseRequest(@Body BaseModelRequestProtobufDTO baseModelRequestProtobufDTO); 
} 

4) моя функция Войти взять Логин и пароль, отправить на сервер. Я хочу получить от него ответ.

public static void login(String login, String password){ 
    Log.v("json", "enter in Login = "); 
    // Prepare data as JSON object 
    Map<String,String> dictionary = new HashMap<>(); 
    dictionary.put("password", password); 
    dictionary.put("login", login); 

    JSONObject JSONData = new JSONObject(dictionary); 
    String JSONModel = JSONData.toString(); 

    Log.v("json", JSONModel); 

    UFCRequest loginRequest = new UFCRequest("login", JSONModel); 

    Log.v("json",loginRequest.baseModel.toString()); 
    Log.v("json",loginRequest.getBaseModel().toString()); 

    Retrofit retrofit = new Retrofit.Builder() 
      .baseUrl("http://77.108.126.41:8080/AAA/endpointshttp/protobuf") 
      .addConverterFactory(WireConverterFactory.create()) 
      .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) 
      .build(); 
    RetrofitService retrofitService = retrofit.create(RetrofitService.class); 
    retrofitService.baseRequest(loginRequest.getBaseModel()) 
      .subscribeOn(Schedulers.newThread()) 
      .observeOn(AndroidSchedulers.mainThread()) 
      .subscribe(new Subscriber{BaseModelResponseProtobufDTO}() { 
       @Override 
       public void onCompleted() { 
        Log.v("json", "onCompleted"); 

       } 

       @Override 
       public void onError(Throwable e) { 
        Log.v("json", "onError " + e); 
       } 

       @Override 
       public void onNext(BaseModelResponseProtobufDTO baseModelResponseProtobufDTO) { 
        Log.v("json", baseModelResponseProtobufDTO.response.toString()); 

        Log.v("json", "onNext"); 
       } 
      }); 

    } 

Я посылаю объект Protobuf на сервер, это содержит два строковых поля Имени и модели. имя - простой струна name. модель - это строка, полученная из объекта json, которая, в свою очередь, была переведена из словаря. Словарь - это логин и пароль.

5) Мой Gradle:

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:23.0.0' 
    compile 'com.squareup.retrofit:retrofit:2.0.0-beta1' 
    compile 'com.squareup.wire:wire-runtime:1.8.0' 
    compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta1' 
    compile 'com.squareup.retrofit:converter-gson:2.0.0-beta1' 
    compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta2' 
    compile 'com.squareup.retrofit:converter-wire:2.0.0-beta2' 
    compile 'io.reactivex:rxandroid:1.0.1' 
} 

6) Мой результат: Я получить - retrofit.HttpException: HTTP 404 Not Found.

Что я делаю неправильно? Пожалуйста!

+0

это означает, что ваш URL неправильно – Tauqir

+0

Могу ли я позвонить серверу через дооснащения, если это не REST API? Простой сервер – Gilb007

+0

@ Tauqir, вы были правы. Omg, retrofit + rxjava works perfetc. @POST ("http://77.108.126.41:8080/AAA/endpointshttp/protobuf/baseMethod"). Thnx много – Gilb007

ответ

Смежные вопросы