Я использую ngrok для размещения своего локального php-проекта в сети. Мне нужно получить идентификатор пользователя в действии входа в систему. Мой Android дает мне
Ответ {протокол = http / 1.1, код = 404, сообщение = не найдено, URL = http://ab873755.ngrok.io/site/login?login=123&pass=123456}
Не удается получить ответв дооснащении Android Studio. URL правильный. Проверил это в Почтальоне
Когда я помещаю этот URL в Почтальон, все нормально и дает правильный ответ. Эта страница возвращает
{"user_id": 1}
package com.example.backgroundservice.ui.login;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class WResponce {
@SerializedName("user_id")
@Expose
private String user_id;
public String getUserId() {
return user_id;
}
public void setUserId(String user_id) {
this.user_id = user_id;
}
}
package com.example.backgroundservice.ui.login;
import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Query;
public interface JSONPlaceHolderApi {
@GET("site/login")
public Call<WResponce> getResponce(
@Query("login") String login,
@Query("pass") String password
);
}
package com.example.backgroundservice.ui.login;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class NetworkClient {
public static final String BASE_URL = "http://ab873755.ngrok.io/";
public static Retrofit retrofit;
public static Retrofit getRetrofitClient(){
if (retrofit == null){
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
}
package com.example.backgroundservice.ui.login;
import android.net.http.HttpResponseCache;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.Toast;
import com.example.backgroundservice.R;
import com.example.backgroundservice.ReceiveData;
import java.io.IOException;
public class LoginActivity extends AppCompatActivity {
final Handler mHandler = new Handler();
private Thread mUiThread;
private JSONPlaceHolderApi jsonPlaceHolderApi;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
}
public void login(View view) throws IOException, InterruptedException{
final EditText username = findViewById(R.id.username);
final EditText password = findViewById(R.id.password);
Retrofit retrofit = NetworkClient.getRetrofitClient();
jsonPlaceHolderApi = retrofit.create(JSONPlaceHolderApi.class);
Call call = jsonPlaceHolderApi.getResponce(username.getText().toString(),password.getText().toString());
call.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
if(response.isSuccessful()){
WResponce res = (WResponce) response.body();
String a = ((WResponce) response.body()).getUserId();
Log.d("myres",a);
Log.d("myres",response.body().toString());
}
Log.d("mymsg",response.message());
Log.d("mymsg",response.toString());
}
@Override
public void onFailure(Call call, Throwable t) {
}
});
}
}