Java 带有参数的HttpURLConnection

Java 带有参数的HttpURLConnection,java,Java,我有一个我传入的URL,看起来像这样 http://somecompany.com/restws/ebi/SVI/4048/?Name=Tra&Brand=Software: WebSphere - Open App Servers 它不喜欢第二个参数(品牌)。从浏览器上看,上面的这个查询字符串工作正常,但我一用Java执行,它就失败了。当我将webservice更改为接受单个参数时,此URL工作正常 http://somecompany.com/restws/ebi/SVI/4048

我有一个我传入的URL,看起来像这样

http://somecompany.com/restws/ebi/SVI/4048/?Name=Tra&Brand=Software: WebSphere - Open App Servers
它不喜欢第二个参数(品牌)。从浏览器上看,上面的这个查询字符串工作正常,但我一用Java执行,它就失败了。当我将webservice更改为接受单个参数时,此URL工作正常

http://somecompany.com/restws/ebi/SVI/4048/?Name=Tra
java似乎对第二个参数有问题。我尝试过逃避角色和其他我能想到的一切,但似乎没有任何效果。请帮忙

String uri = "somecompany.com/restws/ebi/SVI/4048/?Name=" 
           + name+ "&Brand=Software: WebSphere - Open App Servers";

URL url;

try {
    url = new URL(uri);
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.setRequestMethod("GET");
    connection.setRequestProperty("Accept", "application/xml");
}
...

尝试url编码您的参数

大概是这样的:

String uri = "somecompany.com/restws/ebi/SVI/4048/?Name=" +name+ "&Brand=";
uri = URLEncoder.encode("Software: WebSphere - Open App Servers", "utf-8");

我可能会使用一个可以正确处理HTTP参数并提供适当编码等的库。有关更多信息,请参阅和。

我希望这是一个输入错误,但在您的代码中,我不认为您应该让字符串uri包含“websphere open app servers”,如果不是输入错误,希望它很容易修复。这确实是一种方法。我就是这样修改的,现在一切都正常了。String query=String.format(“名称=%s&品牌=%s”,URLEncoder.encode(参数1,字符集),URLEncoder.encode(参数2,字符集));尝试{url=newurl(uri+query);已确认。此解决方案有效。但安全问题如何?将敏感数据放入url时是否会泄漏(我使用的是https)?如果您使用的是https,那么您的参数是加密的。@Dinhnhnattks欢迎您的回复,但我如何确定这一点。也许我应该尝试使用wireshark等工具捕获https请求。使用库是一个好主意。您可以尝试一下。它非常轻量级。