Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 需要使用webservice传输.apk文件_Android_Web Services_File Upload_Apk - Fatal编程技术网

Android 需要使用webservice传输.apk文件

Android 需要使用webservice传输.apk文件,android,web-services,file-upload,apk,Android,Web Services,File Upload,Apk,我已经将我的apk文件转换成字节数组,并使用webservice发送它,如下所示 [WebMethod] public byte[] GetApkFile(string deviceID) { try { string path = ServiceHelper.GetTempFilePath(); string fileName = path + "\\VersionUpdate.apk";

我已经将我的apk文件转换成字节数组,并使用webservice发送它,如下所示

 [WebMethod]
    public byte[] GetApkFile(string deviceID)
    {
        try
        {
            string path = ServiceHelper.GetTempFilePath();
            string fileName = path + "\\VersionUpdate.apk";
            FileStream fileStream = File.OpenRead(fileName);
            return ConvertStreamToByteBuffer(fileStream);          
        }
        catch (Exception ex)
        {
            throw ex;

        }

    }

      public byte[] ConvertStreamToByteBuffer(System.IO.Stream theStream)
    {
        int b1;
        System.IO.MemoryStream tempStream = new System.IO.MemoryStream();
        while ((b1 = theStream.ReadByte()) != -1)
        {
            tempStream.WriteByte(((byte)b1));
        }
        return tempStream.ToArray();
    }
我已经在android应用程序中使用ksoap协议将web服务作为数组字节使用,如下所示

public void DownloadApkFile(String serverIPAddress,
        String deviceId) {

    String SOAP_ACTION = "http://VisionEPODWebService/GetApkFile";
    String OPERATION_NAME = "GetApkFile";
    String WSDL_TARGET_NAMESPACE = "http://VisionEPODWebService/";
    String SOAP_ADDRESS = "";
    SOAP_ADDRESS = "http://" + serverIPAddress
            + "/VisionEPODWebService/SystemData.asmx";
    SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,
            OPERATION_NAME);
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
            SoapEnvelope.VER10);
    new MarshalBase64().register(envelope); 
    envelope.encodingStyle = SoapEnvelope.ENC;
    request.addProperty("deviceID", deviceId);  
    envelope.dotNet = true;
    envelope.setOutputSoapObject(request);
    HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS);
    try {
        httpTransport.call(SOAP_ACTION, envelope);
        Object response = envelope.getResponse();
        byte[] b=response.toString().getBytes();

        String fileName = "/sdcard/" + "VersionUpdate" + ".apk";

       FileOutputStream fileOuputStream = 
                  new FileOutputStream(fileName); 
        fileOuputStream.write(b);
        fileOuputStream.close();           

    }

    catch (Exception exception) {
        exception.toString();           
    }
问题是,在将字节数组[]转换回文件后,我无法获得准确的apk文件

请任何人检查代码,并请告诉我这有任何错误

我需要将转换后的byte[]apk文件返回SD卡中的.apk文件进行安装。

response.toString()
可能不是apk的字符串表示形式

请尝试以下操作:

SoapObject result = (SoapObject)envelope.bodyIn;
byte[] b=result.toString().getBytes();

我已经试过了…但问题是我正在使用dot net webservice转换文件。因此,当涉及到java部分时,它无法解析回apk文件。如果是java到java的通信,它将是可能的。