使用Restfull Post WebServices进行Retrofit

时间:2015-07-11 13:09:13

标签: android web-services rest retrofit restful-url

我尝试将RetrofitRestful WebService一起使用。一切似乎都没问题,但不知何故,当我运行此代码时,这将始终返回此

Method not found. Retrofit 404 Error

这是我的Web服务代码

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);

    }
}

2 个答案:

答案 0 :(得分:0)

中的值
  

Config.LOGIN_URL

很可能是不正确的。请记住

  

Config.SERVER_URL

必须包含基本网址。例如http://www.server.com/(另请注意斜杠重要

接下来,您的属性中的内容必须只是附加在 base 网址上的特定方法的其余部分。例如如果您要调用的方法是 login ,则它应该是

  

@POST(&#34; /登录&#34)

再一次,我不是在开玩笑。

还要记住,如果查询参数通过null发送,则改装会忽略它(稍后您可能会遇到此问题)。

如果您需要任何进一步的帮助,您已经将loglevel设置为full,请将logcat添加到您的问题中,以便我们可以看到正在发生的事情。

答案 1 :(得分:0)

您的代码看起来没问题。

基本上你需要确保你的后端。确保控制器或其他任何东西都是正确的。

也许这对您https://github.com/square/retrofit/issues/789

非常适用

所以,不要看你的Android代码,而是在我想说的其他地方寻找它是一个很好的理由。