2017-10-10 54 views
0

工作竖线获取例外之下,而编码竖线:的URLEncode没有在Java

java.lang.IllegalArgumentException:如果查询非法字符在 指数292:

在java.net.URI中.create(Unknown Source)at org.apache.http.client.methods.HttpGet。(HttpGet.java:69)at com.versionone.apiclient.V1Connector.setGETMethod(V1Connector.java:349) at com.versionone .apiclient.V1Connector.getData(V1Connector.java:307) at com.versionone.apiclien t.Services.retrieve(Services.java:135)在 com.samplev1.v1javasdk.getEpicDetails(v1javasdk.java:120)在 com.samplev1.v1javasdk.main(v1javasdk.java:52)

http://www.example.com/uat/rest/Book?sel=Name,Child:Story[Status='StoryStatus:12'|Status='StoryStatus:12'|Status='StoryStatus:1'][email protected] 

如果我删除管'|'从其余的URL它工作正常,如何使用URLEncoder编码管道字符。

任何帮助,将不胜感激。

代码示例:

private static String EncodeAggregateQuery(String query) throws UnsupportedEncodingException 
{ 
    String q = URLEncoder.encode(query,"UTF-8"); 
    return q; 

} 

我用上面的方法为:

IAttributeDefinition attribute6 = assetType.getAttributeDefinition(EncodeAggregateQuery("Child:Story[Status='StoryStatus:12'|Status='StoryStatus:12'|Status='StoryStatus:1'][email protected]")); 
+1

请包括*整个*堆栈跟踪,而不仅仅是它的第一行。包括产生异常的代码也会非常有用。 – VGR

+1

你可以显示你在哪里打电话URLEncoder.encode() –

+0

'“http://www.example.com/uat/rest/Book?sel=”+ URLEncoder.encode(“... | ...”) '?可能会采取一些安全措施来防止黑管入侵。 –

回答

0

如果你的URL编码方案似乎不工作,你总是可以使用十六进制字符代码。如果您查看ASCII table,您将看到管道字符的十六进制代码为7C。因此,在提交网址之前,您可以简单地用%7C替换管道。

+0

是的,我已经尝试过,它不起作用 –