相关疑难解决方法(0)

如何检查URL是否存在或使用Java返回404?

String urlString = "http://www.nbc.com/Heroes/novels/downloads/Heroes_novel_001.pdf";
URL url = new URL(urlString);
if(/* Url does not return 404 */) {
    System.out.println("exists");
} else {
    System.out.println("does not exists");
}
urlString = "http://www.nbc.com/Heroes/novels/downloads/Heroes_novel_190.pdf";
url = new URL(urlString);
if(/* Url does not return 404 */) {
    System.out.println("exists");
} else {
    System.out.println("does not exists");
}
Run Code Online (Sandbox Code Playgroud)

这应该打印

exists
does not exists
Run Code Online (Sandbox Code Playgroud)

测试

public static String URL = "http://www.nbc.com/Heroes/novels/downloads/";

public static int getResponseCode(String urlString) throws MalformedURLException, IOException {
    URL u = new URL(urlString); 
    HttpURLConnection huc =  (HttpURLConnection)  u.openConnection(); 
    huc.setRequestMethod("GET"); …
Run Code Online (Sandbox Code Playgroud)

java url http-status-code-404

72
推荐指数
5
解决办法
13万
查看次数

如何检查Kafka Server是否正在运行?

我想在开始生产和消费工作之前确保kafka服务器是否正在运行.它是在windows环境中,这是我的kafka服务器在eclipse中的代码...

Properties kafka = new Properties();
kafka.setProperty("broker.id", "1");
kafka.setProperty("port", "9092");
kafka.setProperty("log.dirs", "D://workspace//");
kafka.setProperty("zookeeper.connect", "localhost:2181");    
Option<String> option = Option.empty();
KafkaConfig config = new KafkaConfig(kafka);        
KafkaServer server = new KafkaServer(config, new CurrentTime(), option);
server.startup();
Run Code Online (Sandbox Code Playgroud)

在这种情况下if (server != null)是不够的,因为它总是如此.那么有没有办法知道我的kafka服务器正在运行并为生产者做好准备.我有必要检查一下,因为它会导致丢失一些起始数据包.

谢谢.

java apache-kafka kafka-producer-api

39
推荐指数
5
解决办法
7万
查看次数

检查Android中的主机可访问性/可用性

我一直试图做我认为在我的应用程序互联网企业开始时主机测试的简单可达性,但文档没有帮助,也没有在各个地方找到的例子,我尝试了许多解决方案没有运气,所以如果有人可以指向一个确定的方法来检查主机可用性与android是非常棒的,如果可以到达主机,只需要将bool切换为true

我使用API​​8,如果这对这个过程有很大的不同,并且必须迎合非root设备,所以inetaddress.isReachable已经出来了

android

22
推荐指数
3
解决办法
3万
查看次数

如何快速检查URL服务器是否可用

我在表单中有一个URL

http://www.mywebsite.com/util/conv?a=1&from=%s&to=%s
Run Code Online (Sandbox Code Playgroud)

并想检查它是否可用.

如果我尝试使用浏览器打开这些链接,链接会将我重定向到错误的请求页面,但是通过代码,我可以获得我需要的数据.

在HTTP请求过程中使用try-catch块非常慢,所以我想知道如何ping一个类似的地址来检查它的服务器是否处于活动状态.


我试过了

boolean reachable = InetAddress.getByName(myLink).isReachable(6000);
Run Code Online (Sandbox Code Playgroud)

但总是回报false.

我也试过了

public static boolean exists(String URLName) {

    try {
        HttpURLConnection.setFollowRedirects(false);
        HttpURLConnection con = (HttpURLConnection) new URL(URLName).openConnection();
        con.setConnectTimeout(1000);
        con.setReadTimeout(1000);
        con.setRequestMethod("HEAD");
        return (con.getResponseCode() == HttpURLConnection.HTTP_OK);
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

这会在进程结束时返回正确的值,如果服务器不可用,则位太慢.

编辑

我明白慢慢的原因是什么

a)如果服务器返回一些数据但在完成请求之前中断请求,则忽略超时并停留直到返回Exception导致执行到达catch块的情况,这是导致此方法缓慢的原因,并且我仍然没有找到了有效的解决方案来避免这种情况.

b)如果我启动Android设备并在没有连接的情况下打开应用程序,则正确返回false值,如果应用程序打开且Internet连接处于活动状态且设备丢失其Internet连接,则发生与案例A相同的事情(如果我尝试终止并重新启动应用程序...我不知道为什么,我认为某些东西仍然被缓存)

所有这些似乎与事实相关,Java URLConnection 并未在读取时提供无故障安全超时.看看这个链接上的示例我已经看到使用线程以某种方式中断连接,但如果我添加简单new Thread(new InterruptThread(Thread.currentThread(), con)).start();的样本中的行没有任何变化.

java android http url-validation

22
推荐指数
2
解决办法
4万
查看次数

最有效的java方式来测试300,000多个URL

我正在尝试找到在数据库中测试300,000多个URL的最有效方法,以基本检查URL是否仍然有效.环顾网站后,我发现了许多优秀的答案,现在正在使用以下内容:

从文件中读取URL ....测试URL:

        final URL url = new URL("http://" + address);
        final HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
        urlConn.setConnectTimeout(1000 * 10);
        urlConn.connect();
        urlConn.getResponseCode(); // Do something with the code
        urlConn.disconnect();
Run Code Online (Sandbox Code Playgroud)

将详细信息写回文件....

所以有几个问题:1)是否有更有效的方法来测试URL并获得响应代码?

2)最初我能够每分钟测试大约50个URL,但是在大约5分钟之后,事情真的变慢了 - 我想有一些资源我没有发布但是我不确定是什么

3)某些URL(例如www.bhs.org.au)会导致上述情况持续数分钟(即使设置了连接超时,但是当我有很多要测试的URL时也不好),无论如何我可以收紧它吗?

提前感谢您提供任何帮助,自从我编写任何代码以来,已经有好几年了,我将从头开始:-)

java url httpurlconnection

10
推荐指数
2
解决办法
1190
查看次数

如何检查端口是否在客户端的网络/防火墙处打开?

最后使用jQuery AJAX(和JSONP)的"timeout"属性解决了这个问题.看看我自己的答案!

请参阅更新的部分,我也尝试过applet.如果您可以通过applet实现提供解决方案,我们会毫不犹豫地接受您的答案.

我正在使用基于Java的Web应用程序.我的要求是检查特定端口(例如1935)是否在客户端打开或阻止.我已经实现了一个"jsonp"(为什么'jsonp'?我发现通过AJAX的'http'请求不能用于corssdomain for browsers'相同的原始策略')AJAX调用我的一个包含特定端口的服务器.如果服务器返回xhr.status == 200端口是打开的.这是一个缺点,我不能让执行流等待(同步),直到调用完成.这是我正在使用的JavaScript函数.

任何替代解决方案(必须是客户端的东西必须与我的应用程序并行,请不要建议python/php /其他语言)也欢迎.谢谢你的时间.

function checkURL() {

    var url = "http://10.0.5.255:1935/contextname" ;
    var isAccessible = false;

    $.ajax({
        url: url,
        type: "get",
        cache: false,
        dataType: 'jsonp',
        crossDomain : true,
        asynchronous : false,
        jsonpCallback: 'deadCode',
        complete : function(xhr, responseText, thrownError) {
            if(xhr.status == "200") {
                isAccessible = true;
                alert("Request complete, isAccessible==> " + isAccessible); // this alert does not come when port is blocked
            }
        }
    });

    alert("returning isAccessible=> "+ isAccessible); //this alert …
Run Code Online (Sandbox Code Playgroud)

javascript java jquery jsonp java-ee

5
推荐指数
1
解决办法
1万
查看次数