2011-11-15 29 views
6

tôi đã chuyển đổi tập tin apk của tôi vào mảng byte và gửi nó sử dụng webservice như sauCần chuyển file .apk sử dụng 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(); 
    } 

Tôi đã tiêu thụ các dịch vụ web sử dụng giao thức kSOAP trong ứng dụng Android của tôi như byte mảng như được đưa ra bên dưới

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();   
    } 

Vấn đề là tôi không nhận được tập tin apk chính xác sau khi chuyển mảng byte [] trở lại tệp.

Có ai vui lòng xem lại mã không và vui lòng cho tôi biết có bất kỳ lỗi nào trong này không.

Nhu cầu của tôi để chuyển tệp byte [] apk đã chuyển đổi thành tệp .apk trong sdcard để cài đặt.

Trả lời

1

response.toString() có thể không phải là biểu diễn Chuỗi của APK của bạn.

Hãy thử như sau:

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

Tôi đã thử nó ... nhưng vấn đề là tôi đang chuyển đổi các tập tin sử dụng dấu chấm webservice.So ròng khi nó đến phần java nó không thể phân tích cú pháp để sao cho apk Nếu nó là Java để giao tiếp java nó sẽ có thể. –

Các vấn đề liên quan