一、问题产生场景
实际项目开发中,需要通过get请求传递一个zip包的地址参数,zip地址中含有特殊字符
二、URL特殊符号及编码十六进制值
特殊字符 | 十六进制值 |
---|---|
+ | %2B |
空格 | URL中的空格可以用+号或者编码 %20 |
/ | %2F |
? | %3F |
% | %25 |
# | %23 |
& | %26 |
= | %3D |
Java实现url encoding
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import java.net.URLEncoder;
try {
String url = "http://10.238.6.8:8180/PbDeserialize-service/pbdeserialize/pbfileupdate?pbupdatefile=" + URLEncoder.encode(pbupdatefile, "utf-8");
URI uri = new URI(url);
System.out.println("uri:" + uri);
HttpClient httpClient = null;
HttpGet getMethod = null;
HttpResponse response = null;
getMethod = new HttpGet(uri);
//设置请求头
getMethod.addHeader("Content-Type", "application/json");
getMethod.addHeader("Accept-Encoding", "application/json");
response = httpClient.execute(getMethod);
int statusCode = response.getStatusLine().getStatusCode();
System.out.println("HTTP Status Code:" + statusCode);
if (statusCode != HttpStatus.SC_OK) {
System.out.println("HTTP 请求未成功!HTTP Status Code:" + response.getStatusLine());
}
HttpEntity httpEntity = response.getEntity();
System.out.println("httpEntity:" + httpEntity);
String responseContent = null;
responseContent = EntityUtils.toString(httpEntity, "UTF-8");
//释放资源
EntityUtils.consume(httpEntity);
System.out.println("响应内容: " + responseContent);
} catch (IOException e) {
e.printStackTrace();
} catch (URISyntaxException e) {
e.printStackTrace();
}catch (NullPointerException e){
e.printStackTrace();
}
转载博客:URL及URL encoding 简述