從 HttpConnection 的回應標頭中解析 Set-Cookie,支援常見的 Session ID 格式(JSESSIONID、PHPSESSID、ASP.NET_SessionId):
private String readCookie(HttpConnection conn) throws IOException {
String key, value;
String[] parts;
for (int i = 0; (key = conn.getHeaderFieldKey(i)) != null; i++) {
key = key.toLowerCase();
if (key.equals("set-cookie")) {
value = conn.getHeaderField(i);
while (value != null) {
parts = split(value, ';');
if (parts[0].startsWith("JSESSIONID=") ||
parts[0].startsWith("PHPSESSID=") ||
parts[0].startsWith("ASP.NET_SessionId=")) {
return parts[0];
}
// 取下一個 cookie 片段
value = (parts.length > 1) ? parts[1] : null;
}
}
}
return null;
}
// 簡易分割輔助方法
private String[] split(String src, char delim) {
java.util.Vector v = new java.util.Vector();
int start = 0;
for (int i = 0; i < src.length(); i++) {
if (src.charAt(i) == delim) {
v.addElement(src.substring(start, i).trim());
start = i + 1;
}
}
v.addElement(src.substring(start).trim());
String[] out = new String[v.size()];
v.copyInto(out);
return out;
}
HttpConnection 取得回應碼(如 HTTP_OK)後。null。HttpConnection.getHeaderFieldKey(int) 與 getHeaderField(int) 需成對使用以遍歷所有標頭。