问题描述
限时送ChatGPT账号..我需要用 JSON 数据制定一个 url,看起来像
I need to formulate a url with JSON data that will look something like
http://someurl/passfail?parameter={"data1":"123456789","data2":"123456789"},我需要使用 JBoss 的 ClientResponse 传递它以获得响应状态.我首先尝试在
http://someurl/passfail?parameter={"data1":"123456789","data2":"123456789"}, and I will need to pass it using JBoss's ClientResponse to get a response status. I first tried passing in the literal String data in
ClientRequest clientrequest = new ClientRequest("http://someurl/passfail?parameter={\"data1\":\"123456789\",\"data2\":\"123456789\"});// assuming the "\" is formulated correctly
但它给出了一个例外.因此,我也尝试使用 URL url = new URL(the url) 但效果不佳.
but it gives an exception. Thus I also tried using URL url = new URL(the url) but it doesn't work as well.
我在尝试时遇到了以下异常,感觉很卡住,希望有人能提供帮助.
I have the following exception caught trying and am feeling pretty stucked and am hoping if anyone could help.
非法参数异常:
org.jboss.resteasy.specimpl.UriBuilderImpl.buildFromMap(UriBuilderImpl.java:408)>
org.jboss.resteasy.specimpl.UriBuilderImpl.buildFromValues(UriBuilderImpl.java:558)>
org.jboss.resteasy.specimpl.UriBuilderImpl.build(UriBuilderImpl.java:539)>
org.jboss.resteasy.client.ClientRequest.getUri(ClientRequest.java:786)>
org.jboss.resteasy.client.core.executors.ApacheHttpClientExecutor.execute(ApacheHttpClientExecutor.java:77)>
org.jboss.resteasy.core.interception.ClientExecutionContextImpl.proceed(ClientExecutionContextImpl.java:39)>
org.jboss.resteasy.plugins.interceptors.encoding.AcceptEncodingGZIPInterceptor.execute(AcceptEncodingGZIPInterceptor.java:40)>
org.jboss.resteasy.core.interception.ClientExecutionContextImpl.proceed(ClientExecutionContextImpl.java:45)>
org.jboss.resteasy.client.ClientRequest.execute(ClientRequest.java:473)>
org.jboss.resteasy.client.ClientRequest.httpMethod(ClientRequest.java:704)>
org.jboss.resteasy.client.ClientRequest.get(ClientRequest.java:509)>
org.jboss.resteasy.client.ClientRequest.get(ClientRequest.java:537)>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX at line personal Servlet
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX at line personal Servlet
javax.servlet.http.HttpServlet.service(HttpServlet.java:820)>
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)>
weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)>
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)>
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)>
weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:505)>
weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:251)>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX at line personal Servlet JSP
weblogic.servlet.jsp.JspBase.service(JspBase.java:34)>
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)>
weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)>
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)>
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)>
weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:505)>
weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:251)>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX at line personal Servlet
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX at line personal Servlet
javax.servlet.http.HttpServlet.service(HttpServlet.java:820)>
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)>
weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)>
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)>
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)>
weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:505)>
weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:251)>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX at line personal Servlet
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX at line personal Servlet
javax.servlet.http.HttpServlet.service(HttpServlet.java:820)>
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)>
weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)>
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)>
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)>
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3498)>
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)>
weblogic.security.service.SecurityManager.runAs(Unknown Source)>
weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2180)>
weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086)>
weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406)>
weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)>
weblogic.work.ExecuteThread.run(ExecuteThread.java:173)>
Caused by: java.lang.IllegalArgumentException>
java.URI.create(URI.java:842)>
org.jboss.resteasy.specimpl.UriBuilderImpl.buildFromMap(UriBuilderImpl.java:404)>
... 60 more>
Caused by: java.URISyntaxException: Illegal character in query index 77: http://someurl/passfail?parameter={"data1":"123456789","data2":"123456789"}>
java.URI$Parser.fail(URI.java:2809)>
java.URI$Parser.checkChars(URI.java:2982)>
java.URI$Parser.parseHierarchical(URI.java:3072)>
java.URI$Parser.parse(URI.java:3014)>
java.URI.<init>(URI.java:578)>
java.URI.create(URI.java:840)>
... 61 more>
推荐答案
问题是您在 URI 字符串中传递了非法字符:Java - 将字符串转换为有效的 URI 对象
The problem is that you're passing illegal characters in your URI string:Java - Convert String to valid URI object
http://someurl/passfail?parameter="data1":"123456789","data2":"123456789"}>
您需要转义"URI 中的违规字符.
You need to "escape" the offending characters in your URI.
这里有一些替代方案:
我应该如何转义 JSON 中的字符串?
Java - 将字符串转换为有效的 URI 对象
如何编码 URI 参数值?
在 Java 中编码 URL 查询参数
http://docs.oracle/javase/6/docs/api/java/net/URI.html
最后但并非最不重要的:
and, last but not least:
java.URLEncoderPS:网址中的>"怎么样?
PS: what about that ">" in your URL?
这篇关于使用 JSON 字符串解析 URL 时捕获 IllegalArgumentException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
更多推荐
[db:关键词]
发布评论