准备,引用的jar
converter-jackson-2.9.0.jar,
jackson-annotations-2.9.0.jar,
jackson-core-2.9.9.jar,
jackson-databind-2.9.6.jar,
okhttp-3.14.9.jar,
okio-1.17.2.jar,
retrofit-2.9.0.jar,
1,controller
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class RouterController {
@RequestMapping(value = "/getTest", method = RequestMethod.GET)
@ResponseBody
public DataObject getTest(String inputType, String userIds, String userIdsExcluded) {
try {
DataObject obj = new DataObject("aa", 11);
return obj;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
2,POJO
public class DataObject {
private String name;
private int number;
public DataObject() {
}
public DataObject(String name, int number) {
this.name = name;
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
}
3,endpoint interface
import java.util.concurrent.CompletableFuture;
import retrofit2.http.GET;
//import retrofit2.http.Headers;
import retrofit2.http.Query;
public interface TestEndpoint {
@GET("/getTest")
CompletableFuture<DataObject> getTest(@Query("inputType") String inputType, @Query("userIds") String userIds, @Query("userIdsExcluded") String userIdsExcluded);
}
4 call method
import java.util.concurrent.ExecutionException;
import retrofit2.Converter;
import retrofit2.Retrofit;
import retrofit2.converter.jackson.JacksonConverterFactory;
public class RetrofitTest {
private static final Converter.Factory converterFactory = JacksonConverterFactory.create();
public static void main(String[] args) {
String baseUrl = "http://localhost:8080";
Retrofit.Builder retrofitBuilder = new Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(converterFactory)
;
Retrofit retrofit = retrofitBuilder.build();
TestEndpoint testEndpoint = retrofit.create(TestEndpoint.class);
try {
DataObject obj = testEndpoint.getTest("1", "2", "3").get();
System.out.println("obj name: " + obj.getName() + " number: " + obj.getNumber());
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
System.out.println("end");
}
}