android - 改造 - 网络调用导致应用程序挂起
问题描述
我无法使用 Retrofit 进行网络调用,这会导致应用程序冻结。下面是我的代码:
注册用户接口:
public interface RegisterUserApi
{
@FormUrlEncoded
@POST("register.php")
Call<RegisterUserData> registerUser(
@Field("email") String email,
@Field("password") String password
);
}
注册用户数据:
public class RegisterUserData
{
@SerializedName("value")
private String value;
@SerializedName("email")
private String email;
public RegisterUserData() {}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
注册活动:
Gson gson = new GsonBuilder().setLenient().create();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://www.website.com/")
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
RegisterUserApi registerApi = retrofit.create(RegisterUserApi.class);
System.out.println("inside 1");
Call<RegisterUserData> registerUserDataCall = registerApi.registerUser(email, password);
System.out.println("inside 2");
registerUserDataCall.enqueue(new Callback<RegisterUserData>() {
@Override
public void onResponse(@NonNull Call<RegisterUserData> call, retrofit2.Response<RegisterUserData> response) {
try
{
}
catch(Exception e)
{
e.printStackTrace();
}
}
@Override
public void onFailure(@NonNull Call<RegisterUserData> call, @NonNull Throwable t) {
t.printStackTrace();
}
});
现在在 RegisterActivity 中调用此函数时,logcat 正在打印“inside 1”而不是“inside 2”并导致应用程序冻结。
我不知道到底发生了什么,我也没有在 logcat 中收到任何错误。
有人可以帮我吗?
毕业典礼:
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
我还注意到的一件事是,如果我将 RegisterUserApi 和 RegisterUserData 文件名更改为其他名称,它可能会开始工作。我不知道为什么会这样
我也有相同的登录文件集,效果很好。
解决方案
只需在 AndroidManifest.xml 中添加这一行
android:usesCleartextTraffic="true"
在应用程序标签中
推荐阅读
- android - 使用 9 补丁图像进行初始屏幕时“发现无效颜色”
- node.js - 如何在代理后面获取节点?
- memory - MariaDB 的高 RAM 消耗
- agda - 如何使用标准库改进这个 Agda 功能?
- java - Does python have an equivalent to Java's hashUnencodedChars?
- python - 在 CSV 行中写入整个列表-Python/IronPython
- python - Python how to continue for loop after 5 second
- java - Splitting a String containing special characters in to individual characters
- python - SQLAlchemy - Can't edit table after having closed connection once
- android - React native Linking.getInitialUrl on Android called always