2013-06-08 4 views
2

Мы используем распорки 1.3 в нашем приложении. У нас есть требование, как указано ниже:Как проверить, доступен ли URL с ПК?

У нас есть кнопка на странице входа. Теперь,

  1. Если URL-адрес доступен с ПК пользователя, нажмите кнопку.
  2. В противном случае не показывать его.

Чтобы проверить доступность URL-адресов, я использую XMLHttpRequest.responseText. Ниже приведен мой код:

<html> 
    <head> 
    <title>Test html page</title> 
    <script type="text/javascript"> 
     function checkURL() 
     { 
     var xmlHttp = null; 
     var theUrl = "http://www.googlewetuyyu.co.in"; 
     xmlHttp = new XMLHttpRequest(); 
     xmlHttp.open("GET", theUrl, false); 
     alert(xmlHttp.responseText); 
     } 
    </script> 
    </head> 
    <body onload="checkURL();"> 
    <b>Hello World!</b> 
    </body> 
</html> 

Но все же я ничего не получаю в поле оповещения.

[Я модифицирования немного]

Это на самом деле работает в IE. Но не работает в хроме. Пожалуйста, предложите решение.

Спасибо, Kartic

+0

Это не ясно, что может блокировать пользователю доступ к URL? Если сеть блокирует его или если браузер не поддерживает его? Вы должны объяснить это лучше. –

+0

@Alexandre: Извините за это. Если сеть блокирует его. – tik

ответ

1

Поскольку запросы на перекрестный домен AJAX не работают из-за same origin policy, я предлагаю 2 способа сделать это.

Включите переопределение CSS файл

<link type="text/css" href="http://website.com/normal.css" /> 
<link type="text/css" href="http://otherwebsite.com/override.css" /> 

<div id="login" class="login"> 
    <!-- Your button code --> 
</div> 

normal.css

.login 
{ 
    display: none; 
} 

перенастройки.CSS

#login 
{ 
    display: block; 
} 

Если клиент имеет доступ к http://otherwebsite.com, стиль будет перекрываться, так как будет загружен файл CSS и ID важнее класса.

нагрузочный тест Изображение

<img id="img" style="width: 0;height: 0;" src="http://otherdomain.com/smallimage.png" /> 
<script> 
    $("#img").load(function() { alert("image loaded correctly"); }) 
    .error(function() { alert("error loading image"); }); 
</script> 
+0

Это всегда показывает, что это правда. – tik

+0

@Kartic Спасибо за комментарий, я только что протестировал и добавил тайм-аут, решив его, теперь я передаю статус, чтобы вы могли сравнить себя! = 404, также может быть полезным обратный вызов таймаута, но не нужен :) –

+0

Он не работает в хроме. – tik

0

Если вы работаете апплет в стороне клиента:

Вы можете отправить запрос HTTP, используя URLConnection класс следующим образом:

String url = "http://www.mywebsite.com"; 
String query = "param1=value1"; 
URLConnection connection = new URL(url + "?" + query).openConnection(); 
connection.setRequestProperty("Accept-Charset", charset); 
InputStream response = connection.getInputStream(); 

Если ваш являются прокси-сервером, вы можете указать:

java -Dhttp.proxyHost=webcache.example.com -Dhttp.proxyPort=8080 

Если вы хотите отправить запрос HTTPS, вы можете использовать HttpsURLConnection.

Если HTML визуализируемого в браузере, использовать Javascript:

function httpGet(theUrl) 
{ 
    var xmlHttp = null; 

    xmlHttp = new XMLHttpRequest(); 
    xmlHttp.open("GET", theUrl, false); 
    xmlHttp.send(null); 
    return xmlHttp.responseText; 
} 
+2

Это код Java, вы можете предложить, как выполнить его на ПК пользователя, и включить/отключить кнопку на странице. –

+0

Спасибо, ребята, за вашу помощь! Я должен проверить, доступен ли URL из ПК, откуда я открываю страницу входа. Могу ли я сделать это с помощью HttpConnection или URLConnection? Можете ли вы разместить кусок кода? – tik

+0

@Kartic 'URLConnection' от JDK, а' HTTPConnection' - от apache commons. Я бы порекомендовал обращаться к библиотекам третьих сторон только тогда, когда вы не можете его достичь, используя JDK – Chris

1

Использование HttpUrlConnection класса. Это getResponseCode(), если значение 2XX означает, что URL-адрес работает отлично с вашего ПК.

Вы также можете использовать HttpComponents-HttpClient от apache. Вот короткий отрывок сделать это,

HttpClient client = new DefaultHttpClient(); 
HttpGet httpGet = new HttpGet("url_to_check"); 
HttpResponse response = client.execute(httpGet); 

Вы также можете прикрепить responseHandler к объекту выполнить, чтобы упростить вещи.

+0

Боюсь, что это неверно. Все HTTP-коды в 200 последовательностях в основном прекрасны. Проверьте http://en.wikipedia.org/wiki/List_of_HTTP_status_codes – Chris

+0

Hi Arham, Спасибо за вашу помощь. Я должен проверить, доступен ли URL из ПК, откуда я открываю страницу входа. Могу ли я сделать это с помощью HttpConnection? Можете ли вы разместить кусок кода? – tik

+0

@ Крис Я понимаю вашу мысль. У меня есть правильное мое утверждение. – Arham

Смежные вопросы