如题,retrofit2返回的就是网页内容,用okhttp3就能正常返回json,下面是运行代码。
retrofit2
public interface Api {
@HTTP(method = "GET",path = "/")
@Headers({
"accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36"
})
Call<ResponseBody> getData();
}
public class Test {
public static void main(String[] args) {
Retrofit retrofit = new Retrofit.Builder()
// .addConverterFactory(GsonConverterFactory.create())
.baseUrl("https://api.lolicon.app/setu/v2/") // api地址
.build();
Api api = retrofit.create(Api.class);
Call<ResponseBody> data = api.getData();
data.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
System.out.println("返回成功");
try {
System.out.println(response.body().string()); // 访问成功,但是返回的是网页内容
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
System.out.println("返回失败");
System.out.println(t.getMessage());
}
});
}
}
OKhttp3
public class Test2 {
public static void main(String[] args) {
String url = "https://api.lolicon.app/setu/v2/";
OkHttpClient okHttpClient = new OkHttpClient();
Request build = new Request.Builder().url(url).get().build();
Call call = okHttpClient.newCall(build);
call.enqueue(new Callback() {
@Override
public void onFailure(@NotNull Call call, @NotNull IOException e) {
System.out.println("失败了");
System.out.println(e.getMessage());
}
@Override
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
System.out.println(response.body().string()); // 能正常返回
}
});
}
}