2017-01-27 3 views
1

Retrofit2을 사용 중이며 입력 매개 변수와 함께 다음과 같이 요청을 보내고 있습니다. 그러나 개조하면 자동으로 + 기호가 % 2B으로 변환됩니다. 이 인코딩 및 보내는 방법 자체Retrofit2 쿼리 매개 변수 교체

관련 코드

1)인터페이스

@POST("/registrationapi.php") 
    Call<RegistrationPOJO> registrationResponse(@Query("firstname") String firstname , @Query("lastname") String lastname, 
               @Query("email") String email, @Query("password") String password, 
               @Query("uid") String uid, @Query("mobile") String mobile, 
               @Query("key") String key 
    ); 

2)위해 RESTClient

private APIInterface service; 

public RestClient() { 
     HttpLoggingInterceptor logging = new HttpLoggingInterceptor(); 
     logging.setLevel(HttpLoggingInterceptor.Level.BODY); 
     OkHttpClient.Builder httpClient = new OkHttpClient.Builder(); 
     httpClient.addInterceptor(logging); 
     Retrofit retrofit = new Retrofit.Builder() 
       .baseUrl(AppConfiguration.BASEURL) 
       .addConverterFactory(GsonConverterFactory.create()) 
       .client(httpClient.build()) 
       .build(); 
     service = retrofit.create(APIInterface.class); 
    } 
public void getRegistrationInfo(final Registration context, String firstname, String lastname, String email, 
            String password, String uid, String mobile, String key 
            ){ 
     Call<RegistrationPOJO> reg =service.registrationResponse(firstname,lastname,email,password,uid,mobile,key); 
     reg.enqueue(
       new Callback<RegistrationPOJO>() { 

        @Override 
        public void onResponse(Call<RegistrationPOJO> call, Response<RegistrationPOJO> response) { 
         success = response.isSuccessful(); 

         if(success) { 

          //Handle success flow 
         } else { 
          //Handle error flow 
         } 
        } 
        @Override 
        public void onFailure(Call<RegistrationPOJO> call, Throwable t) { 
         //Handle error flow 
        } 
       } 
     ); 
    } 
01,235 +

휴대 전화 번호의 처음 부분에 + 기호가 있습니다. 개조 로그 개에서 요청을 보내는 동안 mobile=%2B11111111111처럼 변환 된 것을 확인할 수 있습니다.

내가 인코딩을 기대하고 Gradle을 종속성을 해당 mobile=+11111111111

같은 입력 매개 변수를 만드는 중이은 아 누락의 제안 사항에 따라

compile 'com.squareup.retrofit2:retrofit:2.1.0' 
compile 'com.google.code.gson:gson:2.6.2' 
compile 'com.squareup.retrofit2:converter-gson:2.1.0' 
compile 'com.squareup.okhttp3:logging-interceptor:3.3.1' 

있습니다. 검색어 매개 변수에 encoded = true를 사용해보십시오

답변

1

을 예상대로 나는

@Query(value = "mobile" , encoded=true) String mobile 

에 매개 변수를 변경하고 작업했다.

Call<ResponseBody> method(@Query(value = "+11111111111", encoded = true) String mobile) { 
     ..... 
     } 
+0

답변에 따라이 문장을 어떻게 수정합니까? RestClient(). getRegistrationInfo (this, firstname, lastname, email, password, uid, mobile, key); 또한이 하드 코딩이 가능합니까? 전화가 교신 중일 때 – Stallion

+0

@Stallion 위의 encoding = true가 해결 되었습니까? –

+0

@ Stallion 현재 나의 이전 랩탑이 손상되어 시스템을 설치하고 있습니다. @Query ("firstname", encoded = true)를 사용해보십시오. 문자열 firstname –