java.net.SocketException: socket failed: EPERM (Operation not permitted) hatası, API ile bir sunucudan response/request işlemleri yapılmak istendiğinde özellikle sanal AVD cihazlarda çok karşılaşılan bir hatadır ve çözümü de oldukça basittir. Uygulamayı cihazınızdan kaldırın (uygulamaya mouse'un sol tuşu ile uzun süre basılı tutun ve üst menüde beliren uninstall kutusunun üzerine bırakın). Uygulamayı tekrar kurduktan sonra bu hatanın kaybolduğunu ve API üzerinden veri gönderim/alım işlemlerinin sorunsuz olarak gerçekleştiğini görmeniz muhtemeldir. Bu yüzden kodlarınızda hata aramadan önce uygulamayı kaldırıp tekrar kurmanız öncelikli çözüm yöntemi olmalıdır. Benzer şekilde API bağlantısı yapmak isteyip de hata alıyor, ama hatanın ne olduğunu da bilmiyorsanız, aşağıdaki gibi onFailure yöntemini kullanabilir ve hata mesajlarını logcat üzerinden gözlemleyebilirsiniz:
Aşağıdaki kodlar JSON döndüren bir API servisi için örnek kodlardır:
private void networkIslemleri (RequestParams params) {
AsyncHttpClient client = new AsyncHttpClient();
client.get(URL, params, new JsonHttpResponseHandler() {
@Override
public void onSuccess (int statusCode, Header[] headers, JSONObject response) {
Log.d("APP","Bağlantı başarılı: "+ response.toString());
}
@Override
public void onFailure (int statusCode, Header[] headers,Throwable e, JSONObject response) {
Log.e("APP","Hata alındı: "+ e.toString());
Log.d("APP","Hata Kodu: "+ statusCode);
}
});
}