HttpHeaders优化

This commit is contained in:
redkale
2023-12-29 12:54:57 +08:00
parent af3079377f
commit 372f96b3a9
4 changed files with 28 additions and 62 deletions

View File

@@ -135,15 +135,7 @@ public class HttpHeaders implements RestHeaders, Serializable {
@Override
public boolean contains(String name) {
return this.map != null && this.map.containsKey(name);
}
@Override
public boolean containsIgnoreCase(String name) {
if (this.map == null || name == null) {
return false;
}
return !this.map.keySet().stream().filter(name::equalsIgnoreCase).findFirst().isEmpty();
return this.map != null && name != null && get(name) != null;
}
public HttpHeaders addAll(HttpHeaders header) {
@@ -178,7 +170,7 @@ public class HttpHeaders implements RestHeaders, Serializable {
}
//服务端接收,无需校验参数合法性
void addValid(String name, String value) {
void addValid(String name, Serializable value) {
if (this.map == null) {
this.map = new LinkedHashMap<>();
this.map.put(name, value);
@@ -199,22 +191,7 @@ public class HttpHeaders implements RestHeaders, Serializable {
public HttpHeaders add(String name, String value) {
check(name, value);
if (this.map == null) {
this.map = new LinkedHashMap<>();
this.map.put(name, value);
} else {
Serializable old = get(name);
if (old == null) {
this.map.put(name, value);
} else if (old instanceof Collection) {
((Collection) old).add(value);
} else {
ArrayList list = new ArrayList();
list.add(old);
list.add(value);
this.map.put(name, list);
}
}
addValid(name, value);
return this;
}
@@ -225,22 +202,7 @@ public class HttpHeaders implements RestHeaders, Serializable {
for (String val : value) {
check(name, val);
}
if (this.map == null) {
this.map = new LinkedHashMap<>();
this.map.put(name, new ArrayList(value));
} else {
Serializable old = get(name);
if (old == null) {
this.map.put(name, new ArrayList(value));
} else if (old instanceof Collection) {
((Collection) old).addAll(value);
} else {
ArrayList list = new ArrayList();
list.add(old);
list.addAll(value);
this.map.put(name, list);
}
}
addValid(name, new ArrayList(value));
return this;
}
@@ -298,19 +260,28 @@ public class HttpHeaders implements RestHeaders, Serializable {
}
//服务端接收,无需校验参数合法性
void setValid(String name, String value) {
void setValid(String name, Serializable value) {
if (this.map == null) {
this.map = new LinkedHashMap<>();
this.map.put(name, value);
} else {
boolean unfound = true;
for (Map.Entry<String, Serializable> en : this.map.entrySet()) {
if (en.getKey().equalsIgnoreCase(name)) {
this.map.put(en.getKey(), value);
unfound = false;
break;
}
}
if (unfound) {
this.map.put(name, value);
}
}
this.map.put(name, value);
}
public HttpHeaders set(String name, String value) {
check(name, value);
if (this.map == null) {
this.map = new LinkedHashMap<>();
}
this.map.put(name, value);
setValid(name, value);
return this;
}
@@ -321,10 +292,7 @@ public class HttpHeaders implements RestHeaders, Serializable {
for (String val : value) {
check(name, val);
}
if (this.map == null) {
this.map = new LinkedHashMap<>();
}
this.map.put(name, new ArrayList(value));
setValid(name, new ArrayList(value));
return this;
}

View File

@@ -262,11 +262,11 @@ public class HttpSimpleClient extends Client<HttpSimpleConnection, HttpSimpleReq
array.put(("Host: " + uri.getHost() + "\r\n").getBytes(StandardCharsets.UTF_8));
array.put(HttpSimpleRequest.contentLengthBytes(body));
if (headers == null || !headers.containsIgnoreCase("User-Agent")) {
if (headers == null || !headers.contains("User-Agent")) {
array.put(header_bytes_useragent);
}
array.put(header_bytes_connclose);
if (headers == null || !headers.containsIgnoreCase(Rest.REST_HEADER_TRACEID)) {
if (headers == null || !headers.contains(Rest.REST_HEADER_TRACEID)) {
array.put((Rest.REST_HEADER_TRACEID + ": " + traceid + "\r\n").getBytes(StandardCharsets.UTF_8));
}
if (headers != null) {

View File

@@ -185,16 +185,16 @@ public class HttpSimpleRequest extends ClientRequest implements java.io.Serializ
//写status
array.put(((method == null ? "GET" : method.toUpperCase()) + " " + requestPath + " HTTP/1.1\r\n").getBytes(StandardCharsets.UTF_8));
//写header
if (traceid != null && !containsHeaderIgnoreCase(Rest.REST_HEADER_TRACEID)) {
if (traceid != null && !containsHeader(Rest.REST_HEADER_TRACEID)) {
array.put((Rest.REST_HEADER_TRACEID + ": " + traceid + "\r\n").getBytes(StandardCharsets.UTF_8));
}
if (currentUserid != null && !containsHeaderIgnoreCase(Rest.REST_HEADER_CURRUSERID)) {
if (currentUserid != null && !containsHeader(Rest.REST_HEADER_CURRUSERID)) {
array.put((Rest.REST_HEADER_CURRUSERID + ": " + currentUserid + "\r\n").getBytes(StandardCharsets.UTF_8));
}
if (!containsHeaderIgnoreCase("User-Agent")) {
if (!containsHeader("User-Agent")) {
array.put(header_bytes_useragent);
}
if (!containsHeaderIgnoreCase("Connection")) {
if (!containsHeader("Connection")) {
array.put(header_bytes_connalive);
}
array.put(("Content-Type: " + contentType0 + "\r\n").getBytes(StandardCharsets.UTF_8));
@@ -210,8 +210,8 @@ public class HttpSimpleRequest extends ClientRequest implements java.io.Serializ
}
}
protected boolean containsHeaderIgnoreCase(String name) {
return headers != null && headers.containsIgnoreCase(name);
protected boolean containsHeader(String name) {
return headers != null && headers.contains(name);
}
protected static byte[] contentLengthBytes(byte[] clientBody) {

View File

@@ -37,7 +37,5 @@ public interface RestHeaders {
public boolean contains(String name);
public boolean containsIgnoreCase(String name);
public Map<String, Serializable> map();
}