[英]Response body always null in android from retrofit2 api request
[英]Retrofit2 - Requests are always status 404 and the response null
我还看到了3条关于此的SO帖子,但是解决方案不起作用。 每个端点都作为status code 404
返回,并且在retrofit2中响应为null。 这是我的改造实施:
RetrofitService:
//code setup for HTTP client for Retrofit goes here
......
......
public static void initRetrofit() {
builder =
new Retrofit.Builder()
.baseUrl(BuildConfig.BASE_URL)
.addConverterFactory(GsonConverterFactory.create(initGson()));
}
BuildConfig
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
buildConfigField "String", "BASE_URL", "\"http://MY_SERVICE.azurewebsites.net\""
}
debug {
versionNameSuffix ".staging"
buildConfigField "String", "BASE_URL", "\"http://MY_SERVICE.azurewebsites.net\""
}
}
终点:
public interface APIServices {
@POST("api/users/register.json")
Call<HttpResponse<Auth>> register(@Body RegisterData data);
}
我在这里做错了什么? 其他SO线程建议删除/
的/api
从/api/users/register.json
,我做到了,但在响应中没有变化。
您没有为Retrofit
对象设置HTTP客户端。 尝试为此使用OkHttpClient
。
public static void initRetrofit() {
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(Config.HTTP_CONNECT_TIMEOUT, TimeUnit.MILLISECONDS)
.readTimeout(Config.HTTP_READ_TIMEOUT, TimeUnit.MILLISECONDS)
.writeTimeout(Config.HTTP_READ_TIMEOUT, TimeUnit.MILLISECONDS)
.build();
builder =
new Retrofit.Builder()
.baseUrl(BuildConfig.BASE_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create(initGson()));
}
另外,请检查您的API地址-为此尝试使用某些服务(例如邮递员):输入您的地址(从您的代码中输入:' http://MY_SERVICE.azurewebsites.netapi/users/register.json ')。
Retrofit2基本网址应以斜杠结尾。 尝试添加它:
buildConfigField "String", "BASE_URL", "\"http://MY_SERVICE.azurewebsites.net/\""
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.