에서 POST 요청을 보내는 방법 call.enqueue() 메서드는 호출하지 않습니다. 왜 그런지 이해하지 못해요? 도와주세요.Retrofit 2 (Android)
POST 요청에 Retrofit2를 사용합니다. 이것은 나의 간단한 프로젝트 예제이다.
나는 API 서비스 FaceAPI 클래스를 가지고 있습니다. 코드 :
package com.facelocation.testretrofit;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.POST;
public interface FaceAPI {
@POST("api/auth/register")
Call<ResponseBody> registerUser(
@Body RegistrationBody body
);
}
은 내가 JSON 형식으로 서버에 (- 이메일과 비밀번호 두 개의 매개 변수 만 해당) 밀어 노력하고 있어요 RegistrationBody 클래스가 있습니다. 코드 :
package com.facelocation.testretrofit;
public class RegistrationBody {
public String email;
public String password;
public RegistrationBody(String email, String password) {
this.email = email;
this.password = password;
}
}
그리고 나는 단 하나의 버튼으로 간단 MainActivity 클래스가 있습니다. 코드 :
package com.facelocation.testretrofit;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class MainActivity extends AppCompatActivity {
String TAG = "Reg";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://face-location.com/")
.addConverterFactory(GsonConverterFactory.create())
.build();
FaceAPI api = retrofit.create(FaceAPI.class);
RegistrationBody reg = new RegistrationBody("[email protected]", "password12");
Call<ResponseBody> call = api.registerUser(reg);
Log.i(TAG, "Works until here");
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
Toast.makeText(MainActivity.this, "Все прошло хорошо",Toast.LENGTH_SHORT).show();
Log.i(TAG, "THIS METHOD DOESN'T CALL! WHY?" + response.toString());
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
}
});
}
});
}
}
이 코드를 실행할 때 오류가 발생하지 않습니다. 그리고 나는 어떤 서버 응답도 얻지 못한다. 이 코드는 Log.i (TAG, "Works until here"); 그러나 다음 방법은, 나는 생각하지 않는다. 왜 내가 오류나 서버 응답을 얻지 못했는지 이해할 수 없다. 도와주세요!
'onFailure'에 로그를 추가하십시오. –
오, 너무 모욕적입니다! 예, 예외가 있습니다. SSLHandshakeException 증명서 패스의 트러스트 엥커가 발견되지 않습니다. (( – Nastromo
@ Pavneet_Singh 맞습니다 인쇄 t.getMessage() 로그에서 당신의 ResponseBody 클래스에 문제가 있거나 다른 문제가있는 경우 당신이 대답을 얻을 것 같아요 –