2015-07-11 7 views
0

Я пытаюсь использовать Retrofit с Restful WebService. Кажется, все в порядке, но как-то, когда я запускаю этот код это всегда возвращает этотИспользование Retrofit с Restfull Post WebServices

Method not found. Retrofit 404 Error

Вот мой WebServices Код

public function processApi() { 

    $func = strtolower(trim(str_replace("/","",$_POST['request']))); 

    if ((int)method_exists($this,$func) > 0) { 
     $this->$func(); 
    } else { 
     // If the method not exist with in this class, response would be "Page not found". 
     $this->response('Method not found',404); 
    } 
} 

private function login() { 

    // Cross validation if the request method is POST else it will return "Not Acceptable" status 
    if ($this->get_request_method() != "POST") { 
     // If invalid inputs "Bad Request" status message and reason 
     $error = array('status' => "0", "msg" => "Bad Request"); 
     $this->response($this->json($error), 406); 
    } 

    // Input validations 
    if (empty($email) and empty($password)) { 

     $error = array('status' => "0", "msg" => "Invalid Email address or Password"); 
     $this->response($this->json($error), 400); 
    } 
} 



public class ObjectPost { 

    @SerializedName("request") 
    String request; 
    @SerializedName("email") 
    String event_id; 

    public void setRequest(String request) { 
     this.request = request; 
    } 

    public void setEvent_id(String event_id) { 
     this.event_id = event_id; 
    } 
} 

А вот мой Android код запроса

public class RestClient { 

    public interface ClientInterface { 

     @POST(Config.LOGIN_URL) 
     void login(@Body ObjectPost mObject, 
      Callback<LoginBeans> callback); 

    } 

    public static ClientInterface initRestAdapter() { 
     OkHttpClient client = new OkHttpClient(); 

     return (ClientInterface) new RestAdapter.Builder() 
       .setLogLevel(RestAdapter.LogLevel.FULL) 
       .setClient(new OkClient(client)) 
       .setEndpoint(Config.SERVER_URL) 
       .build() 
       .create(ClientInterface.class); 

    } 
} 
+0

Вы пытались с помощью браузера? Вы настроили модификацию, чтобы иметь полный уровень журнала. Что говорит журнал? –

+0

Метод не найден. Модернизация 404 Ошибка –

+0

Вы пытаетесь в браузере? И, пожалуйста, спросите, что ваш сторонний разработчик - это пропуск заголовка в webservice или нет. –

ответ

0

Значение в

Config.LOGIN_URL

Скорее всего неверно. Пожалуйста, помните, что

Config.SERVER_URL

Должен содержать URL-адрес базы. например http://www.server.com/ (также, пожалуйста, обратите внимание, что слэши важно)

Далее, что в атрибуте должна быть только остатком от конкретного метода, который будет приложен на этом базового URL. например если метод, который вы хотите звонить в Войти, он должен быть

@POST («/ Логин»)

Еще раз, я не шучу о косых черт.

Также помните, что если параметр запроса отправляется с нулевым значением, переопределение игнорирует его (вы можете столкнуться с этой проблемой позже).

Если вам нужна дополнительная помощь, у вас уже установлен ваш лог-уровень, добавьте логарифм на свой вопрос, чтобы мы могли видеть, что происходит.

+0

Спасибо за ваш ответ. Но вот мои параметры: public static final String LOGIN_URL = "/ login"; public static final String SERVER_URL = "http://xxyxyx.com"; –

+0

Не могли бы вы разместить логарифм, произведенный модификацией? Просто удалите конфиденциальные данные, но если мы увидим, что мы сможем понять, почему. –

0

Ваш код выглядит хорошо.

В принципе, вам необходимо убедиться, что ваш сервер. Убедитесь, что контроллер или что-то в действительности правильное.

Может быть, это будет вполне применимо к вам https://github.com/square/retrofit/issues/789

Таким образом, вместо того, чтобы смотреть на свой Android код, это хороший повод, чтобы искать где-то еще, что я хотел бы сказать.

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