Java 改装排队不需要';不是工作而是执行工作
我正在使用com.squareup.reformation2:reformation:2.2.0Java 改装排队不需要';不是工作而是执行工作,java,android,http,retrofit,Java,Android,Http,Retrofit,我正在使用com.squareup.reformation2:reformation:2.2.0 HttpLoggingInterceptor logging = new HttpLoggingInterceptor(); logging.setLevel(HttpLoggingInterceptor.Level.BODY); OkHttpClient.Builder httpClient = new OkHttpClient.Builder(); httpCl
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
httpClient.addInterceptor(logging);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://localhost:9000")
.addConverterFactory(GsonConverterFactory.create())
.client(httpClient.build())
.build();
final UserService service = retrofit.create(UserService.class);
Call<User> userCall = service.createUser(user)
将您的代码如下所示:
userCall.enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
Toast.makeText(this, "in response", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(Call<User> call, Throwable t) {
Toast.makeText(this, "in response", Toast.LENGTH_SHORT).show();
}
});
userCall.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
Toast.makeText(这是“响应”,Toast.LENGTH_SHORT).show();
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
Toast.makeText(这是“响应”,Toast.LENGTH_SHORT).show();
}
});
现在,根据方法调用,您将获得toast,如果其响应toast为“响应中”,请不要忘记在前面写上您的活动名称,如:MainActivity。您可以尝试此完整答案 这是最短的代码snippest
private void emailLoginRequest() {
LoginService loginService = ApiFactory.createService(LoginService.class);
Call<JsonObject> call = loginService.login(edtEmail.getText().toString(),edtPassword.getText().toString(),mDeviceType,mDeviceToken);
call.enqueue(new Callback<JsonObject>() {
@Override
public void onResponse(Call<JsonObject> call, Response<JsonObject> response) {
hideProgressDialog();
if (response.isSuccessful()) {
LOGD(TAG, "onResponse 0: " + response.body().toString());
LoginResponse loginResponse = new Gson().fromJson(response.body().toString(), LoginResponse.class);
System.out.println("+++ get message >> " + loginResponse.getMessage());
int status = loginResponse.getStatus();
}else {
LOGD(TAG, "response fail 0: " + response.body());
}
}
@Override
public void onFailure(Call<JsonObject> call, Throwable t) {
hideProgressDialog();
LOGD(TAG, "onFailure: " + t.getMessage());
}
});
}
private void emailLoginRequest(){
LoginService LoginService=apifacture.createService(LoginService.class);
Call Call=loginService.login(edtEmail.getText().toString(),edtPassword.getText().toString(),mDeviceType,mDeviceToken);
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
hideProgressDialog();
if(response.issusccessful()){
LOGD(标记,“onResponse 0:+response.body().toString());
LoginResponse LoginResponse=new Gson().fromJson(response.body().toString(),LoginResponse.class);
System.out.println(“+++获取消息>>”+loginResponse.getMessage());
int status=loginResponse.getStatus();
}否则{
LOGD(标记,“响应失败0:+response.body());
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
hideProgressDialog();
LOGD(标记“onFailure:+t.getMessage());
}
});
}
嗯
这个问题是因为我使用了一个模拟器并试图调用本地主机,但是,如果你想调用本地主机,你必须使用这个ip10.0.2.2
execute
之所以有效,是因为我是作为单元测试运行的,但当它运行enqueue
时,我认为它需要在android平台上运行
参考这个
改型可以通过两种方法分别调用:一种是同步的,另一种是异步的
排队是一种异步方式,它不等待响应并继续。在这里,您需要单独处理调用,以便稍后加载UI
Execute是异步调用RESTAPI并等待得到响应并处理它
明智的选择但是你能在日志中看到请求已经发出吗?不,当我运行它时没有日志。但当我运行execute时,它显示logwell两种方法都不会被调用,以防您希望在本地主机上运行web服务。您始终可以通过修改emulator的主机文件将ip定义为redirec。这是一个很好的选项,不会带来任何麻烦。
private void emailLoginRequest() {
LoginService loginService = ApiFactory.createService(LoginService.class);
Call<JsonObject> call = loginService.login(edtEmail.getText().toString(),edtPassword.getText().toString(),mDeviceType,mDeviceToken);
call.enqueue(new Callback<JsonObject>() {
@Override
public void onResponse(Call<JsonObject> call, Response<JsonObject> response) {
hideProgressDialog();
if (response.isSuccessful()) {
LOGD(TAG, "onResponse 0: " + response.body().toString());
LoginResponse loginResponse = new Gson().fromJson(response.body().toString(), LoginResponse.class);
System.out.println("+++ get message >> " + loginResponse.getMessage());
int status = loginResponse.getStatus();
}else {
LOGD(TAG, "response fail 0: " + response.body());
}
}
@Override
public void onFailure(Call<JsonObject> call, Throwable t) {
hideProgressDialog();
LOGD(TAG, "onFailure: " + t.getMessage());
}
});
}