未指定获取目标主机
Getting Target host is not specified
我正在通过 Grafana 调用普罗米修斯服务器我可以使用邮递员发出以下请求但是当我尝试使用相同的 uri 时 java 代码低于异常
原因:org.apache.http.ProtocolException:未指定目标主机
在 org.apache.http.impl.conn.DefaultRoutePlanner.determineRoute(DefaultRoutePlanner.java:71)
在 org.apache.http.impl.client.InternalHttpClient.determineRoute(InternalHttpClient.java:125)
在 org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
...省略了 31 个常见帧
我的代码如下。
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
String PM_UI_SERVER_URI = "http://" + PM_SERVER_HOST + ":" + getPMUiServerPort();
String uriStr= PM_UI_SERVER_URI + PM_SERVER_BASE_URI + queryString +"&start="+String.valueOf(startTime)+"&end="+String.valueOf(endTime)+"&step=150";
//logger.info("Execute Query uri string: "+uriStr);
String str="http://10.61.244.58:31000/api/datasources/proxy/1/api/v1/query_range?query=em_core_used_heap_mem_mb{job=\"eric-em-om-server\"}&start=1592981880&end=1592982180&step=15";
String encodedurl = URLEncoder.encode(str,"UTF-8");
//URI uri = new URI(encodedurl);
//HttpGet httpget = new HttpGet("http://10.61.244.58:31000/api/datasources/1");
HttpGet httpget = new HttpGet(encodedurl);
httpget.addHeader("Authorization", token);
httpget.addHeader("Content-Type", "application/json");
CloseableHttpResponse response = httpClient.execute(httpget);
有人可以帮忙吗,因为我卡在这里了。
尝试一点一点地构建 URL,而不是直接完成 URL。您可以使用 intelliJ IDE.
中的表达式生成器在调试会话中执行此操作
- 在
... = httpClient.execute(httpget);
行设置断点并在 test/running 处于调试模式的应用程序中运行此代码。
- 突出显示
httpClient.execute(httpget)
- 右键单击此选择并单击“表达式生成器”或使用
Alt
+F8
- 现在尝试为
http://10.61.244.58:31000/
执行 GET (HttpGet
) 请求
- 确保您获得 200 响应状态或同等状态。
- 接下来,您应该可以添加下一个位,例如
http://10.61.244.58:31000/api/datasources/proxy/1/api/v1/query_range
(请注意,我也会尝试不使用 proxy
,因为 URL 可能会出现问题,因为您的请求正在根据此处的文档代理:https://grafana.com/docs/grafana/latest/http_api/data_source/#data-source-proxy-calls
然后我会尝试单独添加和组合查询参数。这不一定能解决您的问题……但如果您可以同时跟踪 grafana server/proxy 服务器上的任何日志,您可能会获得一些更详细的信息,这将有助于您进行调查。
我正在通过 Grafana 调用普罗米修斯服务器我可以使用邮递员发出以下请求但是当我尝试使用相同的 uri 时 java 代码低于异常
原因:org.apache.http.ProtocolException:未指定目标主机 在 org.apache.http.impl.conn.DefaultRoutePlanner.determineRoute(DefaultRoutePlanner.java:71) 在 org.apache.http.impl.client.InternalHttpClient.determineRoute(InternalHttpClient.java:125) 在 org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) ...省略了 31 个常见帧
我的代码如下。
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
String PM_UI_SERVER_URI = "http://" + PM_SERVER_HOST + ":" + getPMUiServerPort();
String uriStr= PM_UI_SERVER_URI + PM_SERVER_BASE_URI + queryString +"&start="+String.valueOf(startTime)+"&end="+String.valueOf(endTime)+"&step=150";
//logger.info("Execute Query uri string: "+uriStr);
String str="http://10.61.244.58:31000/api/datasources/proxy/1/api/v1/query_range?query=em_core_used_heap_mem_mb{job=\"eric-em-om-server\"}&start=1592981880&end=1592982180&step=15";
String encodedurl = URLEncoder.encode(str,"UTF-8");
//URI uri = new URI(encodedurl);
//HttpGet httpget = new HttpGet("http://10.61.244.58:31000/api/datasources/1");
HttpGet httpget = new HttpGet(encodedurl);
httpget.addHeader("Authorization", token);
httpget.addHeader("Content-Type", "application/json");
CloseableHttpResponse response = httpClient.execute(httpget);
有人可以帮忙吗,因为我卡在这里了。
尝试一点一点地构建 URL,而不是直接完成 URL。您可以使用 intelliJ IDE.
中的表达式生成器在调试会话中执行此操作- 在
... = httpClient.execute(httpget);
行设置断点并在 test/running 处于调试模式的应用程序中运行此代码。 - 突出显示
httpClient.execute(httpget)
- 右键单击此选择并单击“表达式生成器”或使用
Alt
+F8
- 现在尝试为
http://10.61.244.58:31000/
执行 GET ( - 确保您获得 200 响应状态或同等状态。
- 接下来,您应该可以添加下一个位,例如
http://10.61.244.58:31000/api/datasources/proxy/1/api/v1/query_range
(请注意,我也会尝试不使用proxy
,因为 URL 可能会出现问题,因为您的请求正在根据此处的文档代理:https://grafana.com/docs/grafana/latest/http_api/data_source/#data-source-proxy-calls
HttpGet
) 请求
然后我会尝试单独添加和组合查询参数。这不一定能解决您的问题……但如果您可以同时跟踪 grafana server/proxy 服务器上的任何日志,您可能会获得一些更详细的信息,这将有助于您进行调查。