相关疑难解决方法(0)

如何在Java中检查有效的URL?

检查URL在Java中是否有效的最佳方法是什么?

如果试图打电话new URL(urlString)并抓住一个MalformedURLException,但似乎对任何开头的东西感到满意http://.

我不关心建立联系,只关心有效性.有这个方法吗?Hibernate Validator中的注释?我应该使用正则表达式吗?

编辑: 接受的URL的一些示例是http://***http://my favorite site!.

java validation url

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

44
推荐指数
6
解决办法
7万
查看次数

UrlValidator不适用于localhost

我正面临一个问题,我在我的代码中使用了UrlValidator.

UrlValidator urlValidator = UrlValidator.getInstance();
    if(urlValidator.isValid(url)) {
        throw new IllegalArgumentException( url + "not valid");
    }
 where url i'm passing is 

 [1]: http://localhost:8080/myapp/Education.html
Run Code Online (Sandbox Code Playgroud)

如果我正在传递url,我将收到IllegalArgumentException

 [2]: https://www.google.co.in/
Run Code Online (Sandbox Code Playgroud)

它的工作正常.如何使此代码适用于localhost:8080

java url-validation

10
推荐指数
1
解决办法
3431
查看次数

网址有效字符.java来验证

像'www.test.com'这样的字符串很好.像'www.888.com'这样的字符串很好.像'stackoverflow.com'这样的字符串很好.像'GOoGle.Com'这样的字符串很好.

为什么?因为那些是有效的网址.如果他们已经注册,则没有必要重要.

现在糟糕的字符串是:

'goog*d\x''manydots ... com'

为什么,因为你不能注册这些网址.

如果我在java中有一个字符串应该是一个好的url什么是验证它的最佳方法?

非常感谢

java url

9
推荐指数
2
解决办法
3465
查看次数

java.lang.IllegalArgumentException:URLDecoder:不完整的尾随转义()模式

我有一个类似的网址,

http://localhost:8080/Project-war/utility/Login.jsf?fallback=%2FProject-war%2Fpublic_resources%2FShowDetails.jsf%3Fid%3D9

当请求登录页面时,会形成此 URL。成功登录后请求将重定向到的返回 URL 作为查询字符串参数附加到 URL。


如果这个 URL 被用户故意更改,

http://localhost:8080/Project-war/utility/Login.jsf?fallback=%2FProject-war%2Fpublic_resources%2FShowDetails.jsf%3Fid%

一些尾随字符已被删除。这是一个格式错误的 URL。在这种情况下,它会导致抛出以下异常。

WARNING:   Error invoking requestInitialized method on ServletRequestListener org.jboss.weld.servlet.WeldListener
java.lang.IllegalArgumentException: URLDecoder: Incomplete trailing escape (%) pattern
    at org.glassfish.grizzly.http.util.URLDecoder.decode(URLDecoder.java:488)
    at org.glassfish.grizzly.http.util.Parameters.processParameters(Parameters.java:654)
    at org.glassfish.grizzly.http.util.Parameters.processParameters(Parameters.java:692)
    at org.glassfish.grizzly.http.util.Parameters.handleQueryParameters(Parameters.java:335)
    at org.glassfish.grizzly.http.server.Request.parseRequestParameters(Request.java:1995)
    at org.glassfish.grizzly.http.server.Request.getParameter(Request.java:1052)
    at org.apache.catalina.connector.Request.getParameter(Request.java:1547)
    at org.apache.catalina.connector.RequestFacade.getParameter(RequestFacade.java:448)
    at org.jboss.weld.servlet.ConversationContextActivator.getConversationId(ConversationContextActivator.java:115)
    at org.jboss.weld.servlet.ConversationContextActivator.activateConversationContext(ConversationContextActivator.java:82)
    at org.jboss.weld.servlet.WeldListener.requestInitialized(WeldListener.java:201)
    at org.apache.catalina.core.StandardContext.fireRequestInitializedEvent(StandardContext.java:5225)
    at org.apache.catalina.core.StandardHostValve.preInvoke(StandardHostValve.java:647)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:166)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) …
Run Code Online (Sandbox Code Playgroud)

glassfish glassfish-4 jakarta-ee

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

如何在java中验证允许使用通配符(*,%)的URL(域)

我想在java中检查验证URL是否允许使用通配符.

我找到了一些关于在java中验证URL的好例子(REGEX,urlValidator),但是那些没有提供通配符.

这是我正在练习的内容:

CODE(urlValidator)

public void urlValidiTest(){
    System.out.println(this.urlCheck("https://www.google.com"));
    System.out.println(this.urlCheck("https://google.com"));
    System.out.println(this.urlCheck("*.com"));
}

public boolean urlCheck(String url){
    return new UrlValidator().isValid(url);
}
Run Code Online (Sandbox Code Playgroud)

OUTPUT

真正

真正

CODE(正则表达式)

public void regexTest() {
  String[] URLs = new String[] { "http://www.google.com", "http://google.com/","*.com" };
    Pattern REGEX = Pattern.compile("(?i)^(?:(?:https?|ftp)://)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))\\.?)(?::\\d{2,5})?(?:[/?#]\\S*)?$");
    for (String url : URLs) {
        Matcher matcher = REGEX.matcher(url);
        if (matcher.find()) {
            System.out.println(matcher.group());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

结果

http://www.google.com

http://google.com/

我想要做的是以上所有URL都有效.

我该如何解决这个问题呢?

任何评论将不胜感激.谢谢.

更新

我摆脱了方案部分,并在答案之后的域部分添加了|*和| \.*(|*和|.*给了我一个错误 - 无效的转义序列(有效的是\ b\t \n\f\r \n \"\') - 但我不确定更改是否正确).

现在它不允许"google.com"; …

java regex url-validation

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

检查URL的格式

我需要一个接受类似URL的Java代码,http://www.example.com并显示URL的格式是否正确.

java

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

有适用于 Java 的 URL 有效生成器吗?

我需要生成有效的 URL。

示例:我传递了 url: google.com 。生成器返回http://google.com/

一些浏览器会这样做。我尝试做我自己的算法,但失败了。

另一个例子:www.yadayadayada.com/../test 返回http://www.yadayadayada.com/test/

public String generateValidURL(String url) {
    int pos = 0;        
    try {
        url = url.trim();
        url = url.replaceAll(" ", "%20");
        if (url.startsWith("http") && (!url.substring(4).startsWith("://"))) {
            for (int i = 4; i < 7; i++) {
                if ((url.charAt(i) == '/') || (url.charAt(i) == ':')) {
                    pos = i;
                }
            }
            url = url.substring(pos + 1);
        }
        if(url.startsWith("https")){
            url = url.replace("https", "http");
        }
        if (!url.startsWith("http")) {
            url = "http://" + url; …
Run Code Online (Sandbox Code Playgroud)

java url generator

2
推荐指数
1
解决办法
5235
查看次数

如何在android中验证URL

如何在android中验证URL ...我正在尝试使用正则表达式,但即使网址正确也始终返回false

使用的代码:

private boolean checkEmail(String email) {
        return URL.matcher(email).matches();
}
    public final Pattern URL = Pattern.compile(
              "/((([A-Za-z]{3,9}:(?:\\/\\/)?)(?:[-;:&=\\+\\$,\\w]+@)?[A-Za-z0-9.-]+(:[0-9]+)?|(?:ww??w.|[-;:&=\\+\\$,\\w]+@)[A-Za-z0-9.-]+)((?:\\/[\\+~%\\/.\\w-_]*)?\\??(?:[-\\+=&;%@.\\w_]*)#???(?:[\\w]*))?)/"
      );
Run Code Online (Sandbox Code Playgroud)

我对正则表达式有非常基础的知识,所以我不知道上面使用的字符串是否正确.请帮忙...

regex android

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

验证没有方案的 URL

斯威夫特 5、Xcode 10、iOS 12

我的代码用于UIApplication.shared.canOpenURL验证 URL,不幸的是没有“http://”就失败了。

例子:

print(UIApplication.shared.canOpenURL(URL(string: "stackoverflow.com")!)) //false
print(UIApplication.shared.canOpenURL(URL(string: "http://stackoverflow.com")!)) //true
print(UIApplication.shared.canOpenURL(URL(string: "129.0.0.1")!)) //false
print(UIApplication.shared.canOpenURL(URL(string: "ftp://129.0.0.1")!)) //true
Run Code Online (Sandbox Code Playgroud)

我知道方案(iOS9+)的变化,我知道如果字符串尚未以“http://”开头,我可以添加前缀,然后检查这个新字符串,但我仍然想知道:

问题:我如何添加“没有方案”方案,以便像“stackoverflow.com”这样的有效 URL 也返回true(这是否可能?)?

xcode url-validation ios swift

2
推荐指数
1
解决办法
1870
查看次数