Я использую Retrofit Android последней версии 1.6 с OKhttp2.0.0-RC2 с Okio
Когда я вызываю метод Post, этот вызов URL генератора Json код отлично работает с кодом состояния 200 (т. е. он вызывает метод успеха (..), анализирует json, все работает нормально!
Json:
{
"responseCode": "200",
"responseMessage": "OK",
"responseDetail": {
"surname": "Trevor",
"forename": "Ross",
"dob": "10101960",
"appRefNo": "1258866",
"result": "Success"
}
}
Код: String hostUrl=
void doTrackRef(Map<String, String> paramsref2) {
RestAdapter restAdapter = new RestAdapter.Builder().setEndpoint(hosturl)
.setLogLevel(RestAdapter.LogLevel.FULL) .setErrorHandler(новый MyErrorHandler()).build();
TrackerRefRequest userref = restAdapter.create(TrackerRefRequest.class);
userref.login(paramsref2,
new Callback<TrackerRefResponse>() {
@Override
public void success(
TrackerRefResponse trackdetailresponse,
Response response) {
Toast.makeText(TrackerActivity.this, "Success",
Toast.LENGTH_SHORT).show();
}
@Override
public void failure(RetrofitError retrofitError) {
Toast.makeText(TrackerActivity.this, "No internet",
Toast.LENGTH_SHORT).show();
}
});
}
Класс MyErrorHandler:
class MyErrorHandler implements ErrorHandler {
@Override public Throwable handleError(RetrofitError cause) {
Response r = cause.getResponse();
if (r != null && r.getStatus() == 401) {
return new Throwable(cause);
}
return cause;
}
}
}
Пожо:
public class TrackerRefResponse {
private String responseCode;
private String responseMessage;
private ResponseDetail responseDetail;
//Setters and Getters
}
Приведенный выше код работает на 100%, все в порядке.
Проблема: когда я меняю API URL-адреса Json на числовой URL-адрес с IP-адресом, например:
Я получаю этот журнал ошибок:
D/Retrofit(9114): ---> HTTP POST http://[IP-Address]/api/index.php/data/TrackerInfo
D/Retrofit(9114): Content-Type: application/x-www-form-urlencoded; charset=UTF-8
D/Retrofit(9114): Content-Length: 22
D/Retrofit(9114): app_ref_no=E0000000001
D/Retrofit(9114): ---> END HTTP (22-byte body)
D/dalvikvm(9114): GC_FOR_ALLOC freed 224K, 7% free 4667K/4996K, paused 2ms, total 4ms
D/Retrofit(9114): ---- ERROR http://[IP-Address]/api/index.php/data/TrackerInfo
D/Retrofit(9114): java.net.UnknownHostException: host == null
D/Retrofit(9114): at com.squareup.okhttp.internal.Dns$1.getAllByName(Dns.java:28)
D/Retrofit(9114): at com.squareup.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:231)
D/Retrofit(9114): at com.squareup.okhttp.internal.http.RouteSelector.next(RouteSelector.java:124)
D/Retrofit(9114): at com.squareup.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:317)
D/Retrofit(9114): at com.squareup.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:241)
D/Retrofit(9114): at com.squareup.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:420)
D/Retrofit(9114): at com.squareup.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:105)
D/Retrofit(9114): at com.squareup.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:239)
D/Retrofit(9114): at retrofit.client.UrlConnectionClient.prepareRequest(UrlConnectionClient.java:68)
D/Retrofit(9114): at retrofit.client.UrlConnectionClient.execute(UrlConnectionClient.java:37)
D/Retrofit(9114): at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:321)
D/Retrofit(9114): at retrofit.RestAdapter$RestHandler.access$100(RestAdapter.java:220)
D/Retrofit(9114): at retrofit.RestAdapter$RestHandler$2.obtainResponse(RestAdapter.java:278)
D/Retrofit(9114): at retrofit.CallbackRunnable.run(CallbackRunnable.java:42)
D/Retrofit(9114): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
D/Retrofit(9114): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
D/Retrofit(9114): at retrofit.Platform$Android$2$1.run(Platform.java:142)
D/Retrofit(9114): at java.lang.Thread.run(Thread.java:841)
D/Retrofit(9114): ---- END ERROR
Обновлять:
Эта проблема решается принятым ответом!