用一个webServices传一个byte数组,传过去的byte数组的length大小跟原本的byte数组的length的大小不一样。为什么?

解决方案 »

  1.   

    用一个webServices传一个byte数组,传过去的byte数组的length大小跟原本的byte数组的length的大小不一样  ?我也是传 byte [] 啊 ,没有看到不一样啊 ,axis框架写的
      

  2.   

    是的。你的byte是什么文件解析成的?我是从一个zip文件读成byte数组的。
      

  3.   

    呀lz,幸亏你遇见我了,帮你解答吧。读zip的时候用这个               int len = 0;
                   byte[] bytes = new byte[256];               while((len = in.read(bytes, 0, bytes.length)) != -1) {
                      out.write(bytes, 0, len);
                   }               out.flush();
                   out.close();
                   in.close();
      

  4.   

    我就是用的这个啊。但是不行,你的in是fileinputstream是吧?out是ByteArrayOutPutStream是吧?
      

  5.   

    把你的outputstream相关代码贴出来。
      

  6.   

    这是客户端public class Client {
        public static void main(String [] args){
         String path = "C:\\Users\\Andy\\Desktop\\01.gif";
         byte [] b = ReadFileToArrayByte.read(path);
         String url = "http://127.0.0.1:8888/TestServer/services/Test?wsdl";
         try {
    TestStub tstub = new TestStub(url);
    SendArraybyte sendbyte = new SendArraybyte();
    System.out.println(b.length);
    sendbyte.setSend(b);
    SendArraybyteResponse res =  tstub.sendArraybyte(sendbyte);
    String ress = res.getOut();
    System.out.println(ress);
    } catch (AxisFault e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (RemoteException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
        }
    }这是服务端                 public org.example.www.test.SendArraybyteResponse sendArraybyte
                      (
                      org.example.www.test.SendArraybyte sendArraybyte
                      )
                {
                    //TODO : fill this with the necessary business logic
                    SendArraybyteResponse res = new SendArraybyteResponse();
                    byte[] b = sendArraybyte.getSend();
                    System.out.println(b.length);
                    String path = "C:\\Users\\Andy\\Desktop\\02.gif";
                    WriteArrayByteToFile.write(b, path);
                    res.setOut("成功!");
                    return res;
            }
         
        }而且我现在发现传压缩过的东西就会出问题。
      

  7.   

    我希望看到ReadFileToArrayByte.read(path)这个方法。
      

  8.   

    WebService 一般用的是 SOAP 协议,SOAP 是 XML 协议,XML 中能放二进制数据么?
      

  9.   

    我已经解决这个问题了。传二进制文件不能用byte数组,只能用base64Binary这个数据类型。然后用DataHandler这个类封装文件的DataSource进行传输。谢谢大家的热情解答。