我有一个网址如下
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
答案 0 :(得分:0)
您执行URLEncoder.encode(url, "UTF-8");
后不应该进行任何替换,因为这实际上是您需要使用的编码字符串。