마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 retrofit POST 방식 전송관련 질문있습니다.

0 추천

안녕하세요

안드로이드 앱 개발 공부중인데요.

 

REST API Server에 아래 캡처 이미지 처럼 RestClient Test로 전송을 하면 결과가 정상적으로 잘 나옵니다.첨부 이미지

 

근데 안드로이드 스튜디오에서 retrofit으로 전송하면 "400 bad request" 오류가 발생하며 결과가 제대로 나오지 않습니다.

아래는 소스입니다.

=====> MainActivity.java

Retrofit retrofit = new Retrofit.Builder()
        .baseUrl("http://192.168.0.150:19800/APIService/")
        .addConverterFactory(GsonConverterFactory.create())
        .build();
WebEndPoints endPoints = retrofit.create(WebEndPoints.class);

endPoints.do_auth("01090091234", 15).enqueue(new Callback<AuthResult>() {
    @Override
    public void onResponse(Call<AuthResult> call, Response<AuthResult> response) {
        AuthResult result = response.body();   // result가 null이어서 response를 확인하니 bad request임
     //통신 성공
     if (result != null)
            Log.e("model", "Success");
   }

    @Override
    public void onFailure(Call<AuthResult> call, Throwable t) {
        //통신 실패
     Log.e("model", "Failed");
   }
});

========> WebEndPoints.java (인터페이스)

<pre>public interface WebEndPoints {
    @Headers({"Content-Type: application/json", "User-Agent: Retrofit-Sample-App"})
    @FormUrlEncoded
    @POST("AuthResult")
    Call<AuthResult> do_auth(@Field("strTelNo") String strTelNo, @Field("nCompCode") Integer nCompCode);
}

========> AuthResult.java

public class AuthResult {
    public Integer ret;
 public String version;
 public String apkname;

 public AuthResult()
    {
        ret = 0;
     version = "";
     apkname = "";
   }
}

 

소스는 위와 같습니다.

 

400 bad request는 전송할때 값이 잘못되었을 때 나오는 오류라고 하는데 

어디부분이 잘못되었을까요?

 

답변부탁드립니다.

감사합니다.

담덕왕 (120 포인트) 님이 2018년 7월 9일 질문
AuthResult의 대문자를 소문자로 바꾸어 보세요.

RestClient 테스트 도구에서는 전부 authresult인데
왜 Retrofit의 API에는 대문자를 넣었을까요?

1개의 답변

0 추천
400 에러면 전달하는 파라미터 형식이 맞는지 확인해보시면 될 거 같네요.
개발자초심 (21,220 포인트) 님이 2018년 7월 9일 답변
...