- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将 SoapObject
或 Envelope
存储在一个文件中,但认为它不是可序列化的,因此它没有存储在文件中。
我的目标是将 SoapObject
或 Envelope
一次存储在文件中,下次再存储一次,而不是构建一个新的 SoapObject
或 Envelope
,从存储的文件中获取该对象。
我已经使用 easywsdl.com 创建了所有方法地点。它的自定义 ExtendedSoapSerializationEnvelope
具有以下定义。
public class ExtendedSoapSerializationEnvelope extends
SoapSerializationEnvelope
{
//Envelop code
}
我使用以下模式使信封可序列化。
public class ExtendedSoapSerializationEnvelope extends
SoapSerializationEnvelope implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
}
并在文件中使用以下代码编写。
public static void writeEnvelope(Object object) throws IOException {
File file = new File(Environment.getExternalStorageDirectory()
.getAbsoluteFile() + File.separator + "envelope.txt");
FileOutputStream fos = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(object);
oos.close();
fos.close();
}
它成功写入 Envelope
但是当我尝试使用以下代码从文件中读取该对象时,
public static Object readEnvelope() throws IOException,
ClassNotFoundException {
File file = new File(Environment.getExternalStorageDirectory()
.getAbsoluteFile() + File.separator + "envelope.txt");
FileInputStream fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);
Object object = ois.readObject();
return object;
}
它在异常之后触发,
java.io.InvalidClassException: org.ksoap2.serialization.SoapSerializationEnvelope; IllegalAccessException
有没有人有实现这一目标的好主意?还有其他方法吗?
最佳答案
嘿,这是将 SoapObject 保存到文件并从文件中获取它的方法。
public boolean saveToFile(SoapObject temp) {
Log.d("DEBUG", "saveFile");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(temp);
XmlSerializer aSerializer = Xml.newSerializer();
ByteArrayOutputStream os = new ByteArrayOutputStream();
try {
aSerializer.setOutput(os, "UTF-8");
envelope.write(aSerializer);
aSerializer.flush();
} catch (Exception e) {
e.printStackTrace();
}
byte[] bytes = os.toByteArray();
try {
FileOutputStream fos = _context.openFileOutput("response" + ".xml", Context.MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(bytes);
oos.close();
return true;
} catch (IOException e) {
e.printStackTrace();
Log.d("DEBUG", "IOException " + e.getMessage());
return false;
}
}
public SoapObject getFromFile() {
Log.d("DEBUG", "getFile");
ObjectInputStream input;
String filename = "response.xml";
try {
FileInputStream fis = _context.openFileInput(filename);
input = new ObjectInputStream(fis);
byte[] bytes = (byte[]) input.readObject();
input.close();
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
SoapObject soap = null;
try {
ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes);
XmlPullParser p = Xml.newPullParser();
p.setInput(inputStream, "UTF-8");
envelope.parse(p);
soap = (SoapObject) envelope.bodyIn;
} catch (Exception e) {
e.printStackTrace();
Log.d("DEBUG", "Exception " + e.getLocalizedMessage());
}
return soap;
} catch (StreamCorruptedException e) {
e.printStackTrace();
Log.d("DEBUG", "StreamCorruptedException " + e.getLocalizedMessage());
return null;
} catch (FileNotFoundException e) {
e.printStackTrace();
Log.d("DEBUG", "FileNotFoundException " + e.getLocalizedMessage());
return null;
} catch (IOException e) {
e.printStackTrace();
Log.d("DEBUG", "IOException " + e.getLocalizedMessage());
return null;
} catch (ClassNotFoundException e) {
e.printStackTrace();
Log.d("DEBUG", "ClassNotFoundException " + e.getLocalizedMessage());
return null;
}
}
它存储在 android 应用程序文件夹中,而不是在 sdcard 或手机存储中
关于java - 如何在文件中存储 SoapObject 或 Envelope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23127163/
已尝试使用 Eclipse IDE 与位于 http://www.w3schools.com/webservices/tempconvert.asmx 的 .NET Web 服务对话的控制台应用程序中
我正在尝试将 aspx Web 服务返回的数组打印到 Android TextView 上。我实际上可以使用以下 android C# aspx 代码读取 TextView 中的数据。但问题是,当我打
我有一个本地字符串,如下所示: String parseStr = "" + "" + "" + "" + "Android" + ""
正在使用 Soap 对象获取 Soap 响应并检索属性。看下面的代码 SoapObject returnObj = (SoapObject)response.getProperty("GetAllDo
我认为这是一个简单的问题,其他人也许能够提供缺失的链接。我有一个 Workflow wcf 服务,我的 .NET 客户端可以与之正确通信。我已经在 appfabric 下打开跟踪并且可以看到服务调用正
我有一个返回简单序列化对象的 .Net Web 服务。 我有以下代码来从我的 .Net 网络服务获得响应。如何将返回的 XML 反序列化为我的对象? 我想返回 MyObject 而不是 SoapPri
我想在我的 Android 应用程序中使用 .net 网络服务。我使用 asynctask 向 Web 服务发送请求。但是 request 没有正确地获取值(value)。我在许多 Android 应
到目前为止,我已经设法连接到 Web 服务并获得我的 SoapObject 响应,但我在缩小良好、干净的解析方式范围时遇到了问题。搜索 Internet 并没有真正产生太多结果,每个人都有不同的方式和
我正在尝试将 SoapObject 或 Envelope 存储在一个文件中,但认为它不是可序列化的,因此它没有存储在文件中。 我的目标是将 SoapObject 或 Envelope 一次存储在文件中
我有一个 Web 服务,它返回对象 Home 的 ArrayList...这是我的类 Home: import java.io.FileNotFoundException; import java.i
我最近一直在使用 ksoap2。 我仍然很困惑 SoapObject 和 SoapPrimitive 之间到底有什么区别。 以及何时使用它们。 我猜它与字符串和数组有关。是真的吗? 我找到了一些链接,
我有一些从 SoapObject (Android/Java) 返回的数据 final SoapObject result=(SoapObject)envelope.getResponse(); So
我是 ksoap2 的新手,我正在尝试让 example w3 schools example 工作。由于某种原因,它总是在这条线上失败。 SoapObject Request = new SoapO
这个问题已经有答案了: java.lang.noclassdeffounderror: org.ksoap2.serialization.SoapObject (3 个回答) 已关闭10 年前。 我正
有很多关于此崩溃/错误的 SO 问题,但所有这些问题要么与 eclipse 相关,要么对我不起作用。我有一个具有以下依赖项的项目 repositories { maven {
我在我的 Android 应用程序中调用 Web 服务,方法是 getGramaNiladhariData(),我得到的结果是 SoapObject。 result = (SoapObject) en
我试图从 SoapObject 中获取一个 boolean 值,我从一个在 Android 中使用 kSOAP2 的网络服务器的响应中得到... 我已将网络调用的响应保存在 SoapObject 中:
自从我更新了 Eclipse ADT 插件和 SDK 管理器后,我就收到了这个 no class def error: org.ksoap2.serialization.SoapObject 错误。我
我正在开发 android web 应用程序,它需要连接 web - 服务以进行响应。 我正在使用 kSOAP 进行网络服务调用过程。[kSOAP 是一个 SOAP Web 服务客户端库,用于受限的
您好,我已经开发了一个 Android 应用程序。 该应用程序的目的是从 mysql 数据库中检索数据并在 android 设备中显示。 这是我的安卓代码: public class Retailer
我是一名优秀的程序员,十分优秀!