2016-12-20 7 views
1

Jenkins의 나머지 API를 사용하여 Jenkins URL에 연결할 수 없지만 Jenkins의 나머지 API를 사용하여 작업 구성을 변경하려고합니다.Rest API를 사용하여 Jenkins 작업 구성을 업데이트하는 중 오류가 발생했습니다.

젠킨스를 다시 시작하지 않고 내 작업을 업데이트 할 수 있도록 변경 사항을 제안 해주십시오. 젠킨스 2.19.4를 사용하고 있습니다. jenkins config.xml에 연결하는 것을 방해하는 jenkins 설정이 있습니까? 아니면 Java 코드에 문제가 있습니까?

try 
    { 
     String fileDir = "D:\\"; // upload directory 
      String fileName = "config.xml"; 
      URL url = new URL("http://myjenkins/job/test/config.xml"); // Jenkins URL localhost:8080, job named 'test' 

      String user = "username"; // username 
      String pass = "password"; // password or API token 
      String authStr = user +":"+ pass; 
      String encoding = DatatypeConverter.printBase64Binary(authStr.getBytes("utf-8")); 

      HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 

      connection.setReadTimeout(10000); 
      connection.setConnectTimeout(15000); 
      connection.setRequestMethod("POST"); 
      connection.setUseCaches(false); 
      connection.setDoInput(true); 
      connection.setDoOutput(true); 
      connection.setRequestProperty ("Authorization", "Basic " + encoding); 

      try 
      { 

       String filePath = "D:\\config.xml"; 
       FileInputStream inputStream = new FileInputStream(new File(filePath)); 
       FileReader fr = new FileReader(new File(filePath)); 
       BufferedReader br = new BufferedReader(fr); 

       String sCurrentLine; 
       System.out.println(sCurrentLine = br.readLine()); 
       OutputStream os = connection.getOutputStream(); 

       BufferedWriter writer = new BufferedWriter(
         new OutputStreamWriter(os, "UTF-8")); 
       while ((sCurrentLine = br.readLine()) != null) { 
        //System.out.println("not going inside!!!!"); 
        writer.write(sCurrentLine); 
        System.out.println(sCurrentLine); 
       } 
       writer.flush(); 
       writer.close(); 
       os.close(); 
       int responseCode=connection.getResponseCode(); 
       System.out.println(responseCode);     
      } 
      catch(Exception e) 
      { 
       e.printStackTrace(); 
      } 

    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
+0

무엇이 오류입니까? – Arran

+0

java.io 예외가있는 403 http 응답을 수신 중입니다. –

+0

403은 서버가 요청을 이해했지만 권한 부여를 거부 함을 나타냅니다. 사용자/암호가 올바른지 확인하고 예상 인코딩 –

답변

0

403 응답의 이유는 CSRF 보안입니다. 젠킨스에서 해당 옵션을 해제하십시오. 또는 각 http 요청에 대해 Crumb를 설정하십시오.