Retrofit 기본 사용 방법

4098 단어 자바android
retrofit github 주소:https://github.com/square/retrofit
            공식 문서:http://square.github.io/retrofit/
인터페이스 문서:http://www.sojson.com/api/weather.html
사용 하 는 인터페이스:http://www.sojson.com/open/api/weather/json.shtml?city=심 천
1.Retrofit 대상 새로 만 들 기
   
Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://www.sojson.com/")
                .build();
      baseUrl 도 메 인 이름 부분 에 만 채 워 졌 습 니 다."/"로 끝내 야 합 니 다.
2.새 인터페이스 만 들 기
   
public interface RequestService {

    @GET("open/api/weather/json.shtml")
    Call getWeather(@Query("city") String cityName);
}
      GET 요청 방식,Retrofit 지원 을 사용 합 니 다.GET
POST
PUT
DELETE
하고  HEAD
"open/api/weather/json.shtml"링크 경로 입 니 다.
@Query("city")는 주석 을 통 해 city 요청 인 자 를 추가 합 니 다.
3.새 인터페이스 에이전트 대상
   
RequestService requestSerives = retrofit.create(RequestService.class);

4.Call 대상 을 통 해 요청 대기 열 에 요청 삽입
 
Call call = requestSerives.getWeather("  ");//            
        call.enqueue(new Callback() {
            @Override
            public void onResponse(Call call, Response response) {
                try {
                    Log.d("MainActivity","return:" + response.body().string());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onFailure(Call call, Throwable throwable) {
                Log.d("MainActivity","error");
            }
        });

5.url 의 전 참 방식
(1)@Path 전송 경로 의 인자
        
//    
    @GET("open/api/{action}/json.shtml")
    Call getStringByAction(@Path("action") String action, @Query("city") String cityName);

   이 경로 에{action}을 추가 하 였 습 니 다.("{}"을 사용 해 야 합 니 다.)전달 하 는 매개 변수 에@Path("action")를 추가 하 였 습 니 다.매개 변수 이름 action 이 일치 해 야 합 니 다.이 를 통 해 요청 주소 의 경 로 를 동적 으로 수정 합 니 다.
  
Call call2 = requestSerives.getStringByAction("weather", "  ");
        call2.enqueue(new Callback() {
            @Override
            public void onResponse(Call call, Response response) {
                Log.d("MainActivity","return2:" + response.body().toString());
                Log.d("MainActivity", "Thread Name :" + Thread.currentThread().getName());
            }

            @Override
            public void onFailure(Call call, Throwable throwable) {
                Log.d("MainActivity","error");
            }
        });

(2)@Query 전달 매개 변수
이 앞 에 이미 예 가 있 습 니 다.여러 개의 파 라 메 터 를 전달 해 야 한다 면@Query Map 이 있 습 니 다.
  
@GET("open/api/weather/json.shtml")
    Call getWeather(@QueryMap Map params);
  
@Query @Query Map 은 url 뒤의 인 자 를 직접 불 러 오기 때문에 GET 요청 방식 에 적합 합 니 다.
POST 요청 이 라면 요청 헤더 에 인자 가 있 으 면@Field 를 사용 해 야 합 니 다. @FieldMap
   
    (3)@바디 전달 대상
      
@POST("users/new")
Call createUser(@Body User user)

  POST 요청 에 사용 하면 전체 대상 이 요청 체 로 전 환 됩 니 다.
   
    (4)@Part        
     @Multipart 와 함께 사용 해 야 합 니 다.폼 데이터 업로드 와 유사 합 니 다.그리고@PartMap
     
6.가입 요청 헤더
 
@Headers({
    "Accept: application/vnd.github.v3.full+json",
    "User-Agent: Retrofit-Sample-App"
})
@GET("users/{username}")
Call getUser(@Path("username") String username);

좋은 웹페이지 즐겨찾기