我正在使用ngrok将本地的php项目放到网络中。我需要在登录操作中获取用户的ID。我的Android给了我
响应{协议= http / 1.1,代码= 404,消息=未找到,URL = {http://ab873755.ngrok.io/site/login?login=123&pass=123456}
在改装的Android Studio中无法获得响应。网址正确。在邮递员中检查过
当我将此URL放入Postman时,一切正常,并给出正确的响应。 该页面返回
{“ 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) {
}
});
}
}