2011-11-15 19 views
6

का उपयोग कर .apk फ़ाइल हस्तांतरण मैं बाइट सरणी में मेरी apk फ़ाइल परिवर्तित कर दिया है और वेब सेवा का उपयोग कर के रूप मेंवेब सेवा

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

मैं के बाइट्स के रूप में मेरे एंड्रॉयड आवेदन में ksoap प्रोटोकॉल का उपयोग वेब सेवा का सेवन किया है इस प्रकार यह भेजने की आवश्यकता है सरणी नीचे

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 फ़ाइल नहीं मिल रहा है है।

क्या कोई भी कोड की समीक्षा करेगा और कृपया मुझे बताएं कि इसमें कोई बग है।

रूपांतरण के लिए sdcard में परिवर्तित बाइट [] apk फ़ाइल को .apk फ़ाइल में वापस लाने की आवश्यकता है।

उत्तर

1

response.toString() आपके एपीके का स्ट्रिंग प्रतिनिधित्व नहीं होने की संभावना है।

निम्नलिखित का प्रयास करें:

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

मैं इसे करने की कोशिश की है ... लेकिन समस्या यह है कि मैं डॉट नेट webservice.So का उपयोग कर जब यह जावा भाग के लिए आते हैं यह apk को वापस करने के लिए पार्स नहीं कर सकता फ़ाइल कनवर्ट कर रहा हूँ फ़ाइल। यदि यह जावा संचार के लिए जावा है तो यह संभव होगा। –