android应用程序在本地服务器上失败

时间:2018-02-04 20:09:05

标签: java android android-studio retrofit

我运行这个例子(https://www.journaldev.com/13639/retrofit-android-example-tutorial),它在我的模拟器(android studio)上运行良好。然后我改变它在我的本地服务器上运行它失败了。发送get方法但服务器没有回答。我把它改成如下:

Mainactivity.java:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    responseText = (TextView) findViewById(R.id.responseText);
    apiInterface = APIClient.getClient().create(APIInterface.class);
    Call<ServerResponse> call0 = apiInterface.get("login","admin","admin");
    call0.enqueue(new Callback<ServerResponse>() {
        @Override
        public void onResponse 
    (Call<ServerResponse>call,Response<ServerResponse> response){
            Log.d("TAG",response.code()+"");
            //String displayResponse = "";
        }
        @Override
        public void onFailure(Call<ServerResponse> call, Throwable t) {
            call.cancel();
        }
    });}

APIInterface.java:

interface APIInterface {
   @GET("/api/api")
   Call<ServerResponse> get(@Query("method") String method, @Query("username") String username, @Query("password") String password);}

ServerResponse.java:

public class ServerResponse implements Serializable{
@SerializedName("returned_username")
private String username;
@SerializedName("returned_password")
private String password;
@SerializedName("message")
private String message;
@SerializedName("error_code")
private int errorCode;
private int status = 1;
private String error;

public ServerResponse(String username, String password, String message, int errorCode, int status, String error){
    this.username = username;
    this.password = password;
    this.message = message;
    this.errorCode = errorCode;
    this.status = status;
    this.error = error;
}

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

public String getMessage() {
    return message;
}

public void setMessage(String message) {
    this.message = message;
}

public int getErrorCode() {
    return errorCode;
}

public void setErrorCode(int errorCode) {
    this.errorCode = errorCode;
}

public String getError() {
    return error;
}

public void setError(String error) {
    this.error = error;
}

public int getStatus() {
    return status;
}

public void setStatus(int status) {
    this.status = status;
}

api.php:

<?php

//Post Method here
$conn = new mysqli("localhost", "root", "", "retrotest");
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} 
if(isset($_POST['method']) == 'login'){
    $username = $_POST['username'];
    $password = $_POST['password'];
    echo $username;
    echo $password;
    if($username == "admin" && $password == "admin"){
        $response = array('returned_username' => "-admin-",
                          'returned_password' => "-admin-",
                          'message' => "Your credentials are so weak [USING_POST]!",
                          'response_code' => "1");
           echo json_encode($response);

    }else{
        $response = array('response_code' => "-1",
                          'message' => "invalid username or password");                    
           echo json_encode($response);
    }
}

//Get Method here
else if(isset($_GET['method']) == 'login'){
$username = $_GET['username'];
$password = $_GET['password'];
if($username == "admin" && $password == "admin"){
    $response = array('returned_username' => "=admin=",
                      'returned_password' => "=admin=",
                      'message' => "Your credentials are so weak [USING_GET]!",
                      'response_code' => "1");
         echo json_encode($response);
}else{
    $response = array('response_code' => "-1",
                      'message' => "invalid username or password");                    
       echo json_encode($response);
}
}

//If no method
else{
    $response = array('response_code' => "-2",
    'message' => "invalid method");                    
         echo json_encode($response);
}
?>

我广告也将基本网址更改为&#34; https://10.0.2.2&#34;。但是当我运行模拟器时,它会在发送get方法时停止。像这样:

  

/com.journaldev.retrofitintro D / OkHttp: - &gt;获得https://10.0.2.2/api/api?method=login&username=admin&password=admin http / 1.1   /com.journaldev.retrofitintro D / OkHttp: - &gt;结束

0 个答案:

没有答案