2016-01-20 15 views
8

को ओवरराइड करने के लिए रेट्रोफिट एडाप्टर में मैंने अपनी सभी कॉल के लिए बेस यूआरएल का उपयोग किया है। इसलिए:एंड्रॉइड रेट्रोफिट - बेसयूआरएल

Retrofit retrofit = new Retrofit.Builder() 
    .baseUrl("https://api.github.com") 
    .build(); 

GitHubService service = retrofit.create(GitHubService.class); 

मान लें कि उपर्युक्त मेरा कोड है, मेरी सभी कॉल अब बेसयूआरएल का उपयोग करती हैं। लेकिन एक विशेष कॉल के लिए, मैं बेस यूआरएल बदलना चाहता हूं, मैं इसके लिए एक और आराम एडाप्टर नहीं बनाना चाहता, क्योंकि यह सिर्फ स्थानीय रूप से परीक्षण के लिए है। क्या मैं इंटरफ़ेस में अंतराल में संभवतः बेसूरल का उपयोग न करने के लिए बदल सकता हूं, या क्या मेरा खुद का बेस यूआरएल आपूर्ति करने के लिए एक एनोटेशन है?

उत्तर

19

आप पूर्ण पूर्ण यूआरएल प्रदान करने के लिए @Url एनोटेशन का उपयोग कर सकते हैं। E.G.

@GET 
Call<GitHubUser> getUser(@Url String url); 
+0

मैं 'com.squareup.retrofit: retrofit: 1.8.0' का उपयोग कर रहा हूं, यह अब काम करेगा, यह कह रहा है कि यह उस एनोटेशन को नहीं ढूंढ सकता है। मैं इसे दस्तावेज़ों में नहीं देखता: http://static.javadoc.io/com.squareup.retrofit/retrofit/1.8.0/index.html?retrofit/http/package-tree.html – j2emanue

+1

नहीं यह नहीं होगा। मुझे लगता है कि इसे रेट्रोफिट 2 के साथ जोड़ा गया था। – Blackbelt

+0

मुझे अपवाद मिल रहा है: java.lang.IllegalArgumentException: \ @Url का उपयोग \ @GET URL (पैरामीटर # 1) – sativa

4

retrofi2 में @GET में पथ बेस यूआरएल को ओवरराइड करता है।

@GET("https://someurl/api/supermarkets") 
Observable<List<TechIndex>> getTechIndexList(); 

अनुरोध "ururl/api/.." को भेजा जाएगा चाहे कोई आधार यूआरएल क्या हो। उम्मीद है कि यह

+0

एक अच्छा मुद्दा है, धन्यवाद – j2emanue

संबंधित मुद्दे