私は String.matches の非常に奇妙な動作をしています:
requestString.matches(".*")
(boolean) false
一方、 requestString は次のようなものです
「HTTP/1.1 200 OK - OK
[...]
Content-Type: text/xml; Charset=iso-8859-1
Content-Length: 1545」
+ もっと...
当然、「HTTP/\\d\\.\\d」に対してテストしたいのですが、明らかにこれは8番目に失敗します: requestString.matches("HTTP/\\d\\.\\d")
requestString の文字列は、Socket 接続を介して受信され、iso-8859-1 エンコーディングで送信されます。ここにコードがあります、
StringBuilder result = new StringBuilder();
int ch;
while ( ! timeoutExceeded() && (ch = reader.read()) != -1) {
result.append((char)ch);
}
String requestString = result.toString()
コードは Android SDK で実行されています。私は何が欠けていますか?エンコーディングが問題ですか?
解決策: DotAll フラグを試してみたヒントのおかげで (再び!)、動作します:
requestString.matches("(?s).*HTTP/\\d\\.\\d.*")