Java SOAP请求。将字符串转换为字节数组

Java SOAP请求。将字符串转换为字节数组,java,soap,jax-ws,Java,Soap,Jax Ws,我有Java上的Soap WS。 这是soap请求 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:his="SCC/Lis/HistoryFormatter"> <soapenv:Header/> <soapenv:Body> <his:formatHistoryByteArray> <

我有Java上的Soap WS。
这是soap请求

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:his="SCC/Lis/HistoryFormatter">
   <soapenv:Header/>
   <soapenv:Body>
      <his:formatHistoryByteArray>
         <arg0>cid:anystring</arg0>
      </his:formatHistoryByteArray>
   </soapenv:Body>
</soapenv:Envelope>  
输入*.xsd

  <xs:complexType name="formatHistoryByteArray">
    <xs:sequence>
      <xs:element name="arg0" type="xs:base64Binary" nillable="true" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

WSDL和xsd由JaxWS生成。
我无法理解java代码中请求字节[]的节点中转换字符串的逻辑。帮助plz
cid:是不是需要的前缀

编辑: 例如,如果我有请求

<arg0>abcdef</arg0>  
abcdef
在java代码中,我得到字节[]={105,-73,29}

WebService如何从字符串abcdef获取这个字节数组

String.getBytes()
返回给定
字符串的(ASCII、UTF8、ISO-8859-1等)编码。这与Base 64不同。Base 64是一种将任意字节显示为可打印字符的方式。因此,它们没有理由是一样的

请参阅本教程第2.1节中关于Base64和XML的内容:。base64位如下所示:

<m:data xmlns:m='http://example.org/people' >
  <photo>/aWKKapGGyQ=</photo>
  <sound>sdcfo2JTiXE=</sound>
  <hash>Faa7vROi2VQ=</hash>
</m:data>

/aWKKapGGyQ=
sdcfo2JTiXE=
Faa7vROi2VQ=
其中,
photo
等是base64元素<代码>cid
不需要前缀

为了解决您的问题,
abcdef
被web服务解组器解释为一个base-64编码字符串,即您收到的三个字节。

string.getBytes()
返回给定
字符串的(ASCII、UTF8、ISO-8859-1等)编码。这与Base 64不同。Base 64是一种将任意字节显示为可打印字符的方式。因此,它们没有理由是一样的

请参阅本教程第2.1节中关于Base64和XML的内容:。base64位如下所示:

<m:data xmlns:m='http://example.org/people' >
  <photo>/aWKKapGGyQ=</photo>
  <sound>sdcfo2JTiXE=</sound>
  <hash>Faa7vROi2VQ=</hash>
</m:data>

/aWKKapGGyQ=
sdcfo2JTiXE=
Faa7vROi2VQ=
其中,
photo
等是base64元素<代码>cid
不需要前缀


为了解决您的问题,
abcdef
被web服务解组器解释为一个base-64编码字符串,即您收到的三个字节。

模式特别声明类型为:“xs:base64Binary”aka:BINARY。如果您希望信息本质上是文本的,那么类型应该是“xs:string”或类似的


实际上,服务应该完全拒绝“cid:anystring”的值。这不是base64编码元素的有效值

模式明确地将类型声明为:“xs:base64Binary”aka:BINARY。如果您希望信息本质上是文本的,那么类型应该是“xs:string”或类似的


实际上,服务应该完全拒绝“cid:anystring”的值。这不是base64编码元素的有效值

你的问题还不清楚。如果要将字符串转换为字节[],请使用
stringValue.getBytes()
WebService自动将字符串转换为字节[],但此结果与stringValue.getBytes()结果不同。不,不是这样。为
formatHistoryByteArray
定义的complexType是一个base64编码值,您必须使用
org.apache.commons.codec.binary.base64
或类似方法将该值解码回字节[]或对象。@位图不是JAXB自动进行转换吗?
xs:base64Binary
已明确指定为您的值类型,因此绑定对象将保存编码的字节。您的问题仍然不清楚。如果要将字符串转换为字节[],请使用
stringValue.getBytes()
WebService自动将字符串转换为字节[],但此结果与stringValue.getBytes()结果不同。不,不是这样。为
formatHistoryByteArray
定义的complexType是一个base64编码值,您必须使用
org.apache.commons.codec.binary.base64
或类似方法将该值解码回字节[]或对象。@位图不是JAXB自动进行转换的吗?
xs:base64Binary
已明确指定为您的值类型,因此绑定对象将保存编码的字节。它仍然不回答question@Bitmap我已经尽可能地更新了答案,考虑到这个问题有多不清楚,它仍然不能回答问题question@Bitmap考虑到问题的不确定性,我已经尽可能地更新了答案。