java中的字符串到字节数组

java中的字符串到字节数组,java,soap,encoding,base64,gzip,Java,Soap,Encoding,Base64,Gzip,我有一个base64编码的字符串。我通过将pdf文件转换为GZ格式,然后根据要求转换为Base64,获得了这个字符串。我想将其发送到服务器,但我生成的类使用Axis2,并且只接受特定soap请求的字节数组 当我使用: base64Str.getBytes() 它再次以UTF-8(默认)对我的字符串进行编码,并更改我要发送的字符串字符。这就是为什么我得到这个错误:文件在服务器端损坏。当我使用SOAPUI工具发送base64字符串时,它可以正常工作,因此我希望将base64字符串转换为字节数组,而

我有一个base64编码的字符串。我通过将pdf文件转换为GZ格式,然后根据要求转换为Base64,获得了这个字符串。我想将其发送到服务器,但我生成的类使用Axis2,并且只接受特定soap请求的字节数组

当我使用:

base64Str.getBytes()
它再次以UTF-8(默认)对我的字符串进行编码,并更改我要发送的字符串字符。这就是为什么我得到这个错误:文件在服务器端损坏。当我使用SOAPUI工具发送base64字符串时,它可以正常工作,因此我希望将base64字符串转换为字节数组,而无需更改其字符或其他方法来完成此任务

**Base64 String**: H4sIAAAAAAAAAKy4dVScy9Y+iLs7wQmu3TgEd3......

**Above string.getBytes()** => EPR3cn7l/pMgVTTS0sz1XzDAAkIgAQjoHkhY....
这对你有帮助吗

导入org.apache.commons.codec.binary.Base64

public class MyTest {
    public static void main(String[] args) {
        String example = "H4sIAAAAAAAAAKy4dVScy9Y+iLs7wQmu3TgEd3";
        Base64 base64 = new Base64();
        byte[] decoded = Base64.decodeBase64(example);

    }
}
您可以使用的parseBase64Binary,如下所示:

String encoded = "H4sIAAAAAAAAAKy4dVScy9Y+iLs7wQmu3TgEd3......";
byte[] bytes = DatatypeConverter.parseBase64Binary(encoded);

可能有更好的方法来处理Base64编码,这里已经解释过了,但要直接解决您的问题:

    String s = "H4sIAAAAAAAAAKy4dVScy9Y+iLs7wQmu3TgEd3";
    System.out.println(s);
    byte[] bytes = s.getBytes();
    System.out.println(new String(bytes));

如果您像这样在目的地重新创建字符串,您确实会收到您发送的内容。

完全绕过
字符串
类。无论您使用什么代码转换为Base64,都要让它直接将数据放入
字节[]


如果您使用的是Java 8,请使用来为您执行此操作。

您可以显示您的代码吗?不清楚您如何接收/发送数据