Android 需要使用webservice传输.apk文件
我已经将我的apk文件转换成字节数组,并使用webservice发送它,如下所示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";
[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的通信,它将是可能的。