gpt4 book ai didi

java - 如何 Ping 返回类型为 void 的 Web 服务方法

转载 作者:行者123 更新时间:2023-11-30 06:28:05 25 4
gpt4 key购买 nike

嗨,我在服务代理中有一个 Web 服务类,它有一个返回 void 的方法。我必须检查服务是否已启动并处于 Activity 状态。由于该方法返回 void,我无法获取服务的状态。有没有办法通过使用或不使用 ping 来检查此 Web 服务方法的状态?

下面是我的 Web 服务方法,其返回类型为 void。此 Web 服务方法将执行一些验证并触发另一个方法,以便它不会返回任何值。

 @GET
@Path("/triggers/{name}")
public void triggerMethod(@PathParam("name") String triggername, @Context HttpServletRequest aHttpRequest){
//code

}

下面是 ping 功能已经存在的代码,但它将检查响应的状态。此代码适用于 Web 服务方法,该方法返回响应并接受 APPLICATION_JSON。

    private void invoketrigger(ServiceDataDTO myData){

try{
target.request().headers(getRequestHeaders()).accept(MediaType.APPLICATION_JSON).get();
Client client = ClientBuilder.newClient();
WebTarget target = client.target(myData.getServiceURI());
Response response = target.request().headers(getRequestHeaders()).accept(MediaType.APPLICATION_JSON).get();
if(response.getStatus() == 200){
status = "green";
}
}




The code which I tried for my method is given below.

private void invoketrigger(ServiceDataDTO myData){

try{
target.request().headers(getRequestHeaders()).accept(MediaType.APPLICATION_JSON).get();
URL url = new URL(myData.getServiceURI());
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(10000);
connection.setReadTimeout(10000);
connection.setRequestMethod("GET");
connection.connect();
int response = connection.getResponseCode();

if(response == 200){
myData.setServiceStatus(ServicesDashboardConstants.STATUS_OK);
}
}catch( Exception e){
System.out.println(e);
}
}

最佳答案

我完全确定你不能在不返回任何东西的情况下做到这一点。客户端不会知道请求是否完成,除非返回的服务正常,否则客户端将等待响应。所以你必须让你的方法返回一个 Response 类型的对象。并且您不需要添加任何内容来响应,只需告诉方法返回 200

response.ok (200) ; // this will tell the method what is the status code response

关于java - 如何 Ping 返回类型为 void 的 Web 服务方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46688565/

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