gpt4 book ai didi

java - I/O错误:没有路由到主机;嵌套的异常是java.net.NoRouteToHostException:没有路由到主机

转载 作者:行者123 更新时间:2023-12-02 02:11:42 29 4
gpt4 key购买 nike

当尝试在Android中使用resttemplate消耗restservice时,出现上述异常。以下是一段代码。

 private class HttpRequestTask extends AsyncTask<Void, Void, ShiftPlannerModel[]> {
@Override
protected ShiftPlannerModel[] doInBackground(Void... params) {
try {
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
ResponseEntity<ShiftPlannerModel[]> greeting = restTemplate.getForEntity(URL, ShiftPlannerModel[].class);
Log.i(greeting.getBody().toString(), "doInBackground: ");
return greeting.getBody();
} catch (Exception e) {
Log.e("doInBackgrouExcp", e.getMessage(), e);
}

return null;
}


注意:休息服务已启动并在本地计算机上运行

enter image description here

以下是完整的堆栈跟踪:
4-19 00:56:21.260 11743-11794 / com.example.admin.myapplication E / doInBackgrouExcp:I / O错误:主机无路由;嵌套的异常是java.net.NoRouteToHostException:没有路由到主机
    org.springframework.web.client.ResourceAccessException:I / O错误:主机没有路由;嵌套的异常是java.net.NoRouteToHostException:没有路由到主机
        在org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:491)
        在org.springframework.web.client.RestTemplate.execute(RestTemplate.java:439)
        在org.springframework.web.client.RestTemplate.getForEntity(RestTemplate.java:259)
        在com.example.admin.myapplication.MainActivity $ HttpRequestTask.doInBackground(MainActivity.java:132)
        在com.example.admin.myapplication.MainActivity $ HttpRequestTask.doInBackground(MainActivity.java:126)
        在android.os.AsyncTask $ 2.call(AsyncTask.java:304)
        在java.util.concurrent.FutureTask.run(FutureTask.java:237)
        在android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:243)
        在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
        在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:607)
        在java.lang.Thread.run(Thread.java:762)
     原因:java.net.NoRouteToHostException:没有到主机的路由
        在java.net.PlainSocketImpl.socketConnect(本地方法)
        在java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:334)
        在java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:196)
        在java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
        在java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356)
        在java.net.Socket.connect(Socket.java:586)
        在com.android.okhttp.internal.Platform.connectSocket(Platform.java:113)
        在com.android.okhttp.Connection.connectSocket(Connection.java:1455)
        在com.android.okhttp.Connection.connect(Connection.java:1413)
        在com.android.okhttp.Connection.connectAndSetOwner(Connection.java:1700)
        在com.android.okhttp.OkHttpClient $ 1.connectAndSetOwner(OkHttpClient.java:133)
        在com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:466)
        在com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:371)
        在com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:503)
        在com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:130)
        在org.springframework.http.client.SimpleBufferingClientHttpRequest.executeInternal(SimpleBufferingClientHttpRequest.java:72)
        在org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:46)
        在org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:63)
        在org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:476)
        在org.springframework.web.client.RestTemplate.execute(RestTemplate.java:439)
        在org.springframework.web.client.RestTemplate.getForEntity(RestTemplate.java:259)
        在com.example.admin.myapplication.MainActivity $ HttpRequestTask.doInBackground(MainActivity.java:132)
        在com.example.admin.myapplication.MainActivity $ HttpRequestTask.doInBackground(MainActivity.java:126)
        在android.os.AsyncTask $ 2.call(AsyncTask.java:304)
        在java.util.concurrent.FutureTask.run(FutureTask.java:237)
        在android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:243)
        在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
        在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:607)
        在java.lang.Thread.run(Thread.java:762)
04-19 00:56:21.261 11743-11743 / com.example.admin.myapplication D / AndroidRuntime:关闭VM
04-19 00:56:21.261 11743-11743 / com.example.admin.myapplication E / AndroidRuntime:FATAL EXCEPTION:main
    流程:com.example.admin.myapplication,PID:11743
    java.lang.NullPointerException:尝试获取空数组的长度
        在com.example.admin.myapplication.MainActivity $ HttpRequestTask.onPostExecute(MainActivity.java:151)
        在com.example.admin.myapplication.MainActivity $ HttpRequestTask.onPostExecute(MainActivity.java:126)
        在android.os.AsyncTask.finish(AsyncTask.java:660)
        在android.os.AsyncTask.-wrap1(AsyncTask.java)
        在android.os.AsyncTask $ InternalHandler.handleMessage(AsyncTask.java:677)
        在android.os.Handler.dispatchMessage(Handler.java:102)
        在android.os.Looper.loop(Looper.java:154)
        在android.app.ActivityThread.main(ActivityThread.java:6776)
        在java.lang.reflect.Method.invoke(本机方法)
        在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1518)
        在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)

最佳答案

异常的含义恰恰是它所说的:您的操作系统没有到目的地的网络路由。它可以将主机名转换为IP地址,但是当尝试联系该目的地时,没有路由。

鉴于localhost始终是可路由的,我的印象是您的代码尝试连接的服务不是localhost而是其他一些服务。如果您将包括完整的堆栈跟踪,它将变得显而易见。

如果要尝试从Android运行环境连接到开发计算机上运行的服务,则需要setup networking on the emulator

关于java - I/O错误:没有路由到主机;嵌套的异常是java.net.NoRouteToHostException:没有路由到主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49907734/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com