gpt4 book ai didi

java - 如何检查网络服务是否可访问?

转载 作者:行者123 更新时间:2023-12-02 00:38:43 24 4
gpt4 key购买 nike

如何检查是否可以访问任何网络服务?
我可以看到服务列表,我也知道 Web 服务中存在的方法名称。但我不知道该方法接受哪些参数。
这是 Web 服务中存在的方法

 public OMElement getChildren(OMElement paramOMElement)
{
Object localObject2 = paramOMElement.toString();
// Some other stuff
}

我尝试了类似http://machine_name/war_name/services/service_name/getChildren?a 并出现以下错误

soapenv:Fault>
<faultcode>soapenv:Client</faultcode>

<faultstring>
Umarshaller error: Error during unmarshall <getChildren><a></a></getChildren>; nested exception is:
edu.harvard.i2b2.common.exception.I2B2Exception: Umarshaller error: Error during unmarshall <getChildren><a></a></getChildren>; nested exception is:
org.apache.axis2.AxisFault: Umarshaller error: Error during unmarshall <getChildren><a></a></getChildren>; nested exception is:
edu.harvard.i2b2.common.exception.I2B2Exception: Umarshaller error: Error during unmarshall <getChildren><a></a></getChildren>
</faultstring>
<detail/>
</soapenv:Fault>

此错误是否意味着我能够访问该服务但发送了错误的参数?
该服务也没有 WSDL 文件。
如何检查服务是否可访问或如何找到所需的确切参数?

最佳答案

那么您需要向服务发送请求并查看是否有响应且没有异常,从而确保服务器正在运行。 对 Java 编码不太熟悉,但这里是 C# 摘录:

function bool CheckIfServiceIsAlive(string url)
{
var isServiceUrlAlive= false;
var req = WebRequest.Create(url);
if (!string.IsNullOrEmpty(proxyServer))
{
var proxy = new WebProxy(proxyServer, 8080) { Credentials = req.Credentials }; //if you need to use a proxy
WebRequest.DefaultWebProxy = proxy;
req.Proxy = proxy;
}
else
{
req.Proxy = new WebProxy();
}
try
{
var response = (HttpWebResponse)req.GetResponse();
isServiceUrlAlive= true;
}
catch (WebException) { }

return isServiceUrlAlive;

对于 java 可能有更简单的解决方案,例如使用 Apache Commons UrlValidator

UrlValidator urlValidator = new UrlValidator();
urlValidator.isValid("http://<your service url>");

或者使用这样的方法来获取响应代码

public static int getResponseCode(String urlString) throws MalformedURLException, IOException {
URL u = new URL(urlString);
HttpURLConnection huc = (HttpURLConnection) u.openConnection();
huc.setRequestMethod("GET");
huc.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)");
huc.connect();
return huc.getResponseCode();
}

或者试试这个:http://www.java-tips.org/java-se-tips/java.net/check-if-a-page-exists-2.html

告诉我哪一个对你有用..

关于java - 如何检查网络服务是否可访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7006809/

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