Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将附件发布到与Java和Apache HttpClient合流时获得404_Java_Api_Post_Attachment_Confluence - Fatal编程技术网

将附件发布到与Java和Apache HttpClient合流时获得404

将附件发布到与Java和Apache HttpClient合流时获得404,java,api,post,attachment,confluence,Java,Api,Post,Attachment,Confluence,我试图将图片作为内容的附件发布到合流页面 以下是我的java应用程序的功能: public void postAttachment(File f, String comment) throws IOException { if (!f.exists() || !f.canRead()) { throw new IOException("Could not access file " + f.getAbsolutePath()); } final Fil

我试图将图片作为内容的附件发布到合流页面

以下是我的java应用程序的功能:

public void postAttachment(File f, String comment) throws IOException {

    if (!f.exists() || !f.canRead()) {
        throw new IOException("Could not access file " + f.getAbsolutePath());
    }

    final FileBody bin = new FileBody(f);
    final StringBody cmt = new StringBody(comment, ContentType.TEXT_PLAIN);
    final HttpEntity reqEntity = MultipartEntityBuilder.create().addPart("file", bin).addPart("comment", cmt).build();

    final HttpPost post = new HttpPost(baseUrl + "/rest/api/content/" + contentid + "/child/attachment");
    post.setEntity(reqEntity);

    post.addHeader(BasicScheme.authenticate(new UsernamePasswordCredentials(props.getString("confluence_user"),props.getString("confluence_password")), "UTF-8", false));
    post.addHeader("X-Atlassian-Token:","no-check");

    System.out.println("executing request " + post.getRequestLine());
    final CloseableHttpClient httpclient = HttpClients.createDefault();


    final CloseableHttpResponse response = httpclient.execute(post);

    System.out.println(post.getRequestLine());
    System.out.println(response.toString());

    if (response.getStatusLine().getStatusCode() == 404) {
        throw new IOException("Status 404 thrown!");
    }

}
终端中的输出为:

POST https://xxx.xxxx.de:443/rest/api/content/38262140/child/attachment 
然后

HttpResponseProxy{HTTP/1.1 404 Not Found [Server: Apache-Coyote/1.1, X-ASEN: SEN-1343236, Set-Cookie: JSESSIONID=9DF46011711C2828977E17A945D023E1; Path=/; Secure; HttpOnly, X-Seraph-LoginReason: OK, X-AUSERNAME: xxxx, X-Content-Type-Options: nosniff, Content-Type: text/plain, Transfer-Encoding: chunked, Date: Tue, 27 Sep 2016 11:20:35 GMT] ResponseEntityProxy{[Content-Type: text/plain,Chunked: true]}}
(我只是为了这篇文章而更改了域名和用户名。)

看来一切都好。如果我复制生成的POST url并在浏览器中执行GET操作,我会得到一个带有附件列表的json代码段,之前手动上载。所以帖子的url应该是可以的


我在网上搜索过,但我找不到我的代码哪里错了。。有什么建议吗?

我现在也在努力添加附件;现在来看看403禁地

我通过我的404发现它在我的(坏)URL中。但是,您的URL看起来确实正确。页面ID是否已关闭,或者您的经过身份验证的用户是否缺少权限(全局权限、空间权限或页面级别权限)


编辑:哦!而且,正如mtheriault的帖子所建议的那样,对照Confluence实例的“attachmentMaxSize”检查附件大小。

我目前也在努力添加附件;现在来看看403禁地

我通过我的404发现它在我的(坏)URL中。但是,您的URL看起来确实正确。页面ID是否已关闭,或者您的经过身份验证的用户是否缺少权限(全局权限、空间权限或页面级别权限)

编辑:哦!而且,正如mtheriault的帖子所建议的,检查连接大小与Confluence实例的“attachmentMaxSize”的对比。

Confluence在“X-Atlassian-Token”头值中是严格的。标题名称中有额外的

改变

 post.addHeader("X-Atlassian-Token:","no-check");

这将创建正确的标头,404错误将消失

Confluence在“X-Atlassian-Token”标头值中是严格的。标题名称中有额外的

改变

 post.addHeader("X-Atlassian-Token:","no-check");


这将创建正确的标题,并且404错误将从文档中消失

:状态404:如果未找到请求的内容,用户没有查看它的权限,或者如果附件超过了配置的最大附件大小,则返回。{id}/child/attachment createAttachments非常感谢您的来信。使用相同的用户,我可以在web界面中手动创建相同的附件。我的电脑大约有150KB大。。所以不幸的是,我不认为这是问题所在。我还使用了另一个(第三方)应用程序来生成相同的内容,因此我认为这不是权限或附件大小问题。出于好奇,您是否能够使用get-https://xxx.xxxx.de:443/rest/api/content/38262140来获取页面?是的,我得到了完整的响应,从{“id”:“38262140”,“type”:“page”,“status”:“current”,“title”:“Diagrams”开始,“space”:……}来自文档:状态404:如果未找到请求的内容,用户没有查看该内容的权限,或者如果附件超过了配置的最大附件大小,则返回。{id}/child/attachment createAttachments非常感谢您的来信。使用相同的用户,我可以在web界面中手动创建相同的附件。我的电脑大约有150KB大。。所以不幸的是,我不认为这是问题所在。我还使用了另一个(第三方)应用程序来生成相同的内容,因此我认为这不是权限或附件大小问题。出于好奇,您是否能够使用get-https://xxx.xxxx.de:443/rest/api/content/38262140来获取页面?是的,我得到了完整的响应,从{“id”:“38262140”,“type”:“page”,“status”:“current”,“title”:“Diagrams”开始,“space”:……}感谢您的评论,但对于同一个用户,我可以使用专有的第三方应用程序创建内容。所以我不认为这是任何许可或附件大小的问题。因为它的价值,我们只是放弃了这个。只是将附件转储到中心位置(第页)。难看,但客户不想在上面花更多的时间……我看到我贴了一条评论作为答案。啊!新手。。。或者我只是没有密切注意。我的错。孩子们不会这么做的-/感谢您的评论,但使用同一用户,我可以使用专有的第三方应用程序创建内容。所以我不认为这是任何许可或附件大小的问题。因为它的价值,我们只是放弃了这个。只是将附件转储到中心位置(第页)。难看,但客户不想在上面花更多的时间……我看到我贴了一条评论作为答案。啊!新手。。。或者我只是没有密切注意。我的错。孩子们不会这么做的-/