使用URLConnection调用Webservice时出现问题

时间:2018-02-23 09:49:46

标签: java url url-encoding

我有一个网址如下

String url = "http://host.com/connect/v1.3/serviceProducts?q=\"lookupName\" LIKE 'A9051%'"

此网址指向一个宁静的网络服务。每当我尝试使用HttpURLConnection点击此网址时,它总是返回 301 Moved Permanently 响应。

我尝试过对网址进行编码。但它仍然无法奏效。下面是我尝试对其进行编码的代码。

try {
    url = URLEncoder.encode(url, "UTF-8");
} catch (UnsupportedEncodingException ex) {
    java.util.logging.Logger.getLogger(DbInteraction.class.getName()).log(Level.SEVERE, null, ex);
}
url = url.replace("%3A", ":").replace("%2F", "/").replace("%3F", "?").replace("%3D", "=").replace("%25", "%");

编码后我的网址看起来像这样。

http://host.com/connect/v1.3/serviceProducts?q=%22lookupName%22+LIKE+%27A9051%%27

使用此编码的网址,我仍然得到301 Status。 我也试过以下网址格式

http://host.com/connect/v1.3/serviceProducts?q=%22lookupName%22%20LIKE%20%27A9051%%27

我不明白我哪里出错了。请建议。

我已尝试在Postman中测试该服务,并且它在预期中正常工作。

PS:这是一个虚拟网址,修改了主机详细信息。

更新

以下是我尝试点击网址的其他方法:

http%3A%2F%2Fhost.com%2Fconnect%2Fv1.3%2FserviceProducts%3Fq%3D%22lookupName%22LIKE%27A9051%25%27

http://host.com/connect/v1.3/serviceProducts%3Fq%3D%22lookupName%22+LIKE+%27A9051%25%27

http://host.com/connect/v1.3/serviceProducts?q%3D%22lookupName%22+LIKE+%27A9051%25%27

http://host.com/connect/v1.3/serviceProducts?q=%22lookupName%22+LIKE+%27A9051%25%27

1 个答案:

答案 0 :(得分:0)

您执行URLEncoder.encode(url, "UTF-8");后不应该进行任何替换,因为这实际上是您需要使用的编码字符串。

相关问题