0

JIRA REST API のリクエストとレスポンスの形式が JSON 形式であることはよく知られています。タイプ の URL を使用して、アップロードされたファイルの添付ファイルの詳細を正常に取得しましたhttp://example.com:8080/jira/rest/api/2/attachment

同じ REST API を使用して、JIRA にファイルをアップロードする必要があります。私はJavaクライアントを所有しており、それを使用してマルチパート入力を投稿する必要があると述べられていMultiPartEntityます。X-Atlassian-Token: nocheckJSON リクエストでヘッダーを送信する方法がわかりません。ドキュメントを検索すると、curl ベースのリクエストの例しか得られませんでした。誰でもこれを修正するのを手伝ってもらえますか?

4

2 に答える 2

1

私はこのようにしましたが、うまくいきます:

public static void main( String[] args ) throws Exception {
    File f = new File(args[ 0 ]);
    String fileName = f.getName();
    String url = "https://[JIRA-SERVER]/rest/api/2/issue/[JIRA-KEY]/attachments";

    CloseableHttpClient httpClient = HttpClients.createDefault();
    HttpPost post = new HttpPost( url );
    post.setHeader( "Authorization", basicAuthHeader( "username", "password" ) );
    post.setHeader( "X-Atlassian-Token", "nocheck" );
    HttpEntity reqEntity = MultipartEntityBuilder.create()
            .setMode( HttpMultipartMode.BROWSER_COMPATIBLE )
            .addBinaryBody( "file",
                new FileInputStream( f ),
                ContentType.APPLICATION_OCTET_STREAM,
                f.getName() )
            .build();
    post.setEntity( reqEntity );
    post.setHeader( reqEntity.getContentType() );
    CloseableHttpResponse response = httpClient.execute( post );
}

public static String basicAuthHeader( String user, String pass ) {
    if ( user == null || pass == null ) return null;
    try {
        byte[] bytes = ( user + ":" + pass ).getBytes( "UTF-8" );
        String base64 = DatatypeConverter.printBase64Binary( bytes );
        return "Basic " + base64;
    }
    catch ( IOException ioe ) {
        throw new RuntimeException( "Stop the world, Java broken: " + ioe, ioe );
    }
}
于 2016-07-14T15:43:54.883 に答える