私はRetrofitを使用してポストAPIコールを試みています。サーバーは正しいデータで応答しています。Postman(Chrome)でチェックしました。次のように私のコードはRetrofitを使用中にSocketTimeOut例外が発生しました。
パブリッククラスMainActivityアクティビティ実装retrofit2.Callback> {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final OkHttpClient okHttpClient = new OkHttpClient.Builder()
.connectTimeout(6, TimeUnit.MINUTES)
.readTimeout(6, TimeUnit.MINUTES)
.writeTimeout(6, TimeUnit.MINUTES)
.build();
Gson gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
.create();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://kokanplaces.com/")
.addConverterFactory(GsonConverterFactory.create(gson)).client(okHttpClient)
.build();
// prepare call in Retrofit 2.0
ApiInterface apiService =
ApiClient.getClient().create(ApiInterface.class);
Call<List<CityModel>> call = apiService.getCitiesList();;
//asynchronous call
call.enqueue(this);
}
@Override
public void onResponse(Call<List<CityModel>> call, Response<List<CityModel>> response) {
int code = response.code();
if (code == 200) {
for (CityModel cityModel : response.body()) {
System.out.println(
cityModel.getCityname() + " (" + cityModel.getCityId() + ")");
}
} else {
Toast.makeText(this, "Did not work: " + String.valueOf(code), Toast.LENGTH_LONG).show();
}
}
@Override
public void onFailure(Call<List<CityModel>> call, Throwable t) {
Toast.makeText(this, "failure", Toast.LENGTH_LONG).show();
System.out.println(t.fillInStackTrace());
t.printStackTrace();
}
}
public interface ApiInterface {
@POST("wp-json/getCities")
Call<List<CityModel>> getCitiesList();
}
たびに、それがソケットタイムアウト例外がスローさを拡張。
いずれの解決策も大きな助けになります。
として答えをマークすることを忘れないでください、私は私のミスを見つけましたApiInteの代わりに –
rface apiService = ApiClient.getClient()。create(ApiInterface.class); retrofit.create(ApiInterface.class)を呼び出す必要があります。他のものは元気だった。 –