java - 获取文件(401 未经授权)- Alfresco

标签 java xmlhttprequest alfresco alfresco-share alfresco-webscripts

我在 Alfresco 中获得一个文件,其链接例如:http://localhost:8080/share/proxy/alfresco/workspace/SpacesStore/c9d187e8-aec5-4177-9587-a5b924e514cd/exemplo.pdf在 javascript 上使用 XMLHttpRequest ,我没有遇到问题。但我正在尝试在 JAVA 上执行此操作:

public static byte[] callURL(String myURL) {
        System.out.println("Requeted URL:" + myURL);
        StringBuilder sb = new StringBuilder();
        URLConnection urlConn = null;
        InputStreamReader in = null;
        try {
            URL url = new URL(myURL);

            urlConn = url.openConnection();
            if (urlConn != null)
                urlConn.setReadTimeout(60 * 1000);
            if (urlConn != null && urlConn.getInputStream() != null) {
                in = new InputStreamReader(urlConn.getInputStream(),
                        Charset.defaultCharset());
                BufferedReader bufferedReader = new BufferedReader(in);
                if (bufferedReader != null) {
                    int cp;
                    while ((cp = bufferedReader.read()) != -1) {
                        sb.append((char) cp);
                    }
                    bufferedReader.close();
                }
            }
            in.close();
        } catch (Exception e) {
            throw new RuntimeException("Exception while calling URL:" + myURL, e);
        }
        String sbString = sb.toString();
        System.out.println(sbString);
        byte[] b = sbString.getBytes(StandardCharsets.UTF_8); 
        return b;
    }

但这给了我

401 unauthorized

。问题是什么?我需要任何身份验证吗?我该如何解决这个问题?

最佳答案

我解决了!对于可能有同样问题的人,请按照此tutorial 。您知道如何访问内容。

纯文本:

ContentReader reader = contentService.getReader(nodeRef, ContentModel.PROP_CONTENT);
String content = reader.getContentString();

二进制数据:

ContentReader reader = contentService.getReader(nodeRef, ContentModel.PROP_CONTENT);
InputStream originalInputStream = reader.getContentInputStream();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
final int BUF_SIZE = 1 << 8; //1KiB buffer
byte[] buffer = new byte[BUF_SIZE];
int bytesRead = -1;
while((bytesRead = originalInputStream.read(buffer)) > -1) {
    outputStream.write(buffer, 0, bytesRead);
}
originalInputStream.close();
byte[] binaryData = outputStream.toByteArray();

关于java - 获取文件(401 未经授权)- Alfresco,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33836254/

相关文章:

java - 当文本从右到左时确定 JTextArea 的区域中存在什么文本

java - 如果子字符串/单词位于有界缓冲区的边界,如何找到它

javascript - 网站工作,但不是在 iphone 上。 XMLHttpRequest() 错误

javascript - 使用 Object.create() 创建 XMLHttpRequest 对象

java - 我如何使用java获取当前的工作流程实例ID?

java - 无法在 FOPTransformer 中包含 Arial 字体

java - 使用 xstream 将 XML 映射到 POJO

node.js - Socket.io access-control-allow=来自远程站点的来源错误

java - 使用 java 以编程方式创建 Alfresco 站点

java - Hibernate 生成不明确的 SQL 查询