2016-06-28 3 views
0

Для robotframework мне нужно написать код, который может преобразовать массив байтов в String. Но до этого мне нужно знать размер байтового массива?преобразовать массив байтов в String в robotframework

Я попытался это одно:

@SuppressWarnings("deprecation") 
    public static byte[] retrievePolicy(String aPolicyNumber) { 

     String METHOD_NAME="retrievePolicy"; 
     byte[] myBinData = null; 
     Connection myConnection = null; 
     String mySelectSql = "SELECT PSD_BIN_DATA FROM XAT_POLICY_STUB_DATA WHERE PSD_POLICY_NBR = ?"; 
     String myWorkingQuerySelect; 

     //Statement myStmt = null; 
     PreparedStatement myPreparedStatement = null; 
     String myJndiName; 

     try { 
      DataSource myDataSource; 
      myJndiName = AllcorpProperties.getProperty(ALLIANCE_STUB_DATASOURCE_JNDI_NAME); 
      myWorkingQuerySelect= mySelectSql; 

      myDataSource = ServiceLocator.obtainDataSource(myJndiName); 
      if(myDataSource!=null) { 
       myConnection = myDataSource.getConnection(); 
       if(myConnection != null){ 
        //myStmt = myConnection.createStatement(); 
        myPreparedStatement = myConnection.prepareStatement(myWorkingQuerySelect); 
        myPreparedStatement.setString(1, aPolicyNumber); 
        ResultSet resultSet = myPreparedStatement.executeQuery(); 

        if (resultSet != null && resultSet.next()) { 
         Blob myBlob = resultSet.getBlob(1); 
         if (myBlob != null) { 
          myBinData = myBlob.getBytes((long) 1, (int) myBlob.length()); 
         } 
        } 
       }else{ 
        PolicyServiceException myPolicyServiceException = new PolicyServiceException(new AllcorpException(), 
          EXCEPTION_OBTAINING_CONNECTION, 
          PolicyDAO.CDB_COMMUNICATION_ERROR, METHOD_NAME,BUSINESS_FUNCTION_NAME); 
        AllcorpLogger.error(CLASS_NAME,myPolicyServiceException); 
        throw myPolicyServiceException; 
       } 

      }else{ 
       PolicyServiceException myPolicyServiceException = new PolicyServiceException(new AllcorpException(), 
         EXCEPTION_STATEMENT_GET_DATASOURCE, 
         PolicyDAO.CDB_COMMUNICATION_ERROR, METHOD_NAME,BUSINESS_FUNCTION_NAME); 
       AllcorpLogger.error(CLASS_NAME,myPolicyServiceException); 
       throw myPolicyServiceException; 
         } 

     } catch (SQLException mySQLException) { 

      AllcorpLogger.error(CLASS_NAME,new PolicyServiceException(mySQLException, 
      "Error occurred while retreiving policy from stub DB for policy number "+aPolicyNumber,"SDBURTP",METHOD_NAME,BUSINESS_FUNCTION_NAME)); 
     } catch(AllcorpInfrastructureException myAllcorpInfrastructureException) 
     { 
      PolicyServiceException myAllcorpException = new PolicyServiceException(
        myAllcorpInfrastructureException, "Exception while obtaining the data source ", 
        "STUBDBRP", METHOD_NAME, BUSINESS_FUNCTION_NAME); 
      AllcorpLogger.error(CLASS_NAME, myAllcorpException); 
     } 
     catch (Exception myException) { 

      AllcorpLogger.error(CLASS_NAME,new PolicyServiceException(myException, 
        "Error occurred while retreving policy from StubDB for policy number " +aPolicyNumber,"STUBDRP2",METHOD_NAME,BUSINESS_FUNCTION_NAME)); 
     }finally { 
      try { 
       if (myPreparedStatement != null) { 
        myPreparedStatement.close(); 
       } 
       if(myConnection != null){ 
       myConnection.close(); 
       } 

      } catch (SQLException myException) { 
       AllcorpLogger.error(CLASS_NAME,new PolicyServiceException(myException, 
         "Error closing prepared statement object","SDBURTP1",METHOD_NAME,BUSINESS_FUNCTION_NAME)); 
      } 
     } 
     return myBinData; 
    } 
+0

политику, которую мне нужно это (BLOB) –

+0

Я немного запутался. Вы отправили большой кусок кода, но я понятия не имею, где там лежит ваша проблема? Просьба пояснить, почему вы не можете использовать, например, 'new String (byte [] bytes)' или 'DatatypeConverter.printBase64Binary (byte [] val)' и - если возможно, уменьшите образец кода. – Rhayene

ответ

0

Если у вас есть байт [] вы можете преобразовать его в строку, используя новый String (байт [], набор символов), например

byte[] b = ...; //However you got that byte[] 
String charsetName = "UTF-8"; //Or whatever the charset was using for encoding 
String result = new String(b,charsetName); 

Вы должны знать, в какой кодировке был закодирован байт []. Типичные значения: «UTF-8» или «ISO-8859-1».

0

Вы можете сделать это в файле робота

${temp} = Convert To Bytes 0102030405 hex 
Смежные вопросы