URISyntaxException查询中的非法字符
我试图在默认浏览器中打开一个链接。 我使用了以下代码。
String myUrl = "http://www.example.com/engine/myProcessor.jsp?Type=A Type&Name=1100110&Char=!"; try { Desktop.getDesktop().browse(new URI(myUrl)); } catch (IOException err) { setTxtOutput("Error: "+err.getMessage()); } catch (URISyntaxException err) { setTxtOutput("Error: "+err.getMessage()); } catch (Exception err) { setTxtOutput("Error: "+err.getMessage()); }
我在索引查询中得到URISyntaxException非法字符
我觉得这是因为人物如? , & ! 在我的url中。 我试过用:
URLEncoder.encode(myUrl, "UTF-8");
但这给了我另一个错误。
Failed to open http%3A%2F%2Fwww.example.com%2F........... The system cannot find the file specified.
请问您能告诉我如何纠正URISyntaxException非法字符错误。
这是因为这里有空格...jsp?Type=A Type&...
,你可以用+
替换它
http://www.example.com/engine/myProcessor.jsp?Type=A+Type&Name=1100110&Char=!"
您不应对整个URL进行编码,因为URI类需要有效的协议。 仅对参数进行编码
myUrl = "http://www.example.com/engine/myProcessor.jsp?" + URLEncoder.encode("Type=A Type&Name=1100110&Char=!", "UTF-8");
将URL中的空格替换为+ like如果url包含category = Adult Care,则将其替换为category = Adult + Care。
以下代码适用于我:
MultivaluedMap params = new MultivaluedMapImpl(); params.add("filter", URLEncoder.encode(filter)); _webResource.path(MessageFormat.format(this._methodName,this._params)) .queryParams((MultivaluedMap) this._params) .type("application/x-www-form-urlencoded") .accept("application/json") .get(ClientResponse.class);