在以下Http请求代码中,“ \\ A”定界符有什么作用?

时间:2019-09-25 16:20:39

标签: java android http

因此,我正在关注有关Udacity的Android应用开发课程,我很困惑。   以下函数返回JSON,但我不了解分隔符(“ \ A”)的用法。

  public static String getResponseFromHttpUrl(URL url) throws IOException {
        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
        try {
            InputStream in = urlConnection.getInputStream();

            Scanner scanner = new Scanner(in);
            scanner.useDelimiter("\\A");

            boolean hasInput = scanner.hasNext();
            if (hasInput) {
                return scanner.next();
            } else {
                return null;
            }
        } finally {
            urlConnection.disconnect();
        }
    }

那么\ A分隔符的作用是什么?它是如何工作的?

1 个答案:

答案 0 :(得分:2)

useDelimiter(String pattern)方法使用正则表达式模式作为参数。

正则表达式模式在Pattern类的javadoc中被记录

Boundary matchers块中列出了\A模式:

  

\A-输入的开头

这基本上指定没有定界符,因此next()方法将读取整个输入流。

问题代码与使用Apache Commons IO库的以下代码等效:

HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
try {
    String content = IOUtils.toString(urlConnection.getInputStream(), Charset.defaultCharset());
    return (content.isEmpty() ? null : content);
} finally {
    urlConnection.disconnect();
}