pom.xml
<dependency>
<groupId>com.squareup.retrofit2</groupId>
<artifactId>retrofit</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.squareup.retrofit2</groupId>
<artifactId>converter-jackson</artifactId>
<version>2.3.0</version>
</dependency>
Api接口
package com.qbsea.mysboot2shirojwt.common.utils.qbseaapi;
import com.qbsea.mysboot2shirojwt.common.mybatis.entities.customed.TUserJwtshiroSub;
import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Query;
public interface QbseaApi {
@GET("apitest/custom/response/1.ajax")
Call<TUserJwtshiroSub> testresponse(@Query("appid") String appId, @Query("secret") String secret, @Query("js_code") String code,
@Query("grant_type") String grantType);
}
注入APi接口的Bean
package com.qbsea.mysboot2shirojwt.common.utils.qbseaapi;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import retrofit2.Retrofit;
import retrofit2.converter.jackson.JacksonConverterFactory;
@Configuration
public class QbseaConfiguration {
@Value("${qbsea.url}")
private String url;
@Bean
QbseaApi qbseaApi(ObjectMapper objectMapper) {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(url)
.addConverterFactory(JacksonConverterFactory.create(objectMapper))
.build();
return retrofit.create(QbseaApi.class);
}
}
调用入口
@SpringBootApplication
@MapperScan(basePackages = "com.qbsea.mysboot2shirojwt")
public class ShiroJwtMain {
public static void main(String[] args) throws IOException {
ConfigurableApplicationContext context = SpringApplication.run(ShiroJwtMain.class, args);
QbseaApi qbseaApi = (QbseaApi) context.getBean("qbseaApi");
Call<TUserJwtshiroSub> tUserJwtshiro = qbseaApi.testresponse(null, null, null, null);
System.out.println("========"+tUserJwtshiro.execute().body().getUsername());
}
}
涉及到的参考报文
{"id":1,"name":"马庆斌","username":"maqingbin","password":"password","salt":"salt","islocked":true,"createTime":"2018-10-17 17:25:29","updateTime":"2018-10-17 17:25:29"}
涉及到model类
package com.qbsea.mysboot2shirojwt.common.mybatis.entities.generated;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
public class TUserJwtshiroSub{
private Long id;
private String name;
private String username;
private String password;
private String salt;
private Boolean islocked;
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date createTime;
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date updateTime;
public TUserJwtshiro(Long id, String name, String username, String password, String salt, Boolean islocked, Date createTime, Date updateTime) {
this.id = id;
this.name = name;
this.username = username;
this.password = password;
this.salt = salt;
this.islocked = islocked;
this.createTime = createTime;
this.updateTime = updateTime;
}
public TUserJwtshiro() {
super();
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name == null ? null : name.trim();
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username == null ? null : username.trim();
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password == null ? null : password.trim();
}
public String getSalt() {
return salt;
}
public void setSalt(String salt) {
this.salt = salt == null ? null : salt.trim();
}
public Boolean getIslocked() {
return islocked;
}
public void setIslocked(Boolean islocked) {
this.islocked = islocked;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
}
之前整理的一遍retrofit