- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在开发 android web 应用程序,它需要连接 web - 服务以进行响应。
我正在使用 kSOAP 进行网络服务调用过程。[kSOAP 是一个 SOAP Web 服务客户端库,用于受限的 Java 环境,例如 Applets 或 J2ME 应用程序。]
如果我将响应的 xml 保存到本地目录中,例如。/mnt/sdcard/appData/config.xml 然后每当我请求 Web 服务时,首先它会检查本地文件是否存在,然后将该文件视为响应文件,否则连接到服务器。
这个过程减少了响应时间并提高了应用程序的效率。
是否可以将它('config.xml')转换为 SOAP 对象?以及如何?
考虑我的 xml 本地文件如下:
config.xml
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<Response xmlns="http://testuser.com/webservices/response">
<Result>
<SName>Test User</SName>
<UnitDesc>SAMPLE Test </UnitDesc> <RefreshRate>60</RefreshRate>
<Out>
<Definition>
<Code>ABC</Code>
<Description>(Specific)</Description>
<Action>true</Action>
<Despatch>false</Despatch>
</Definition>
<Definition>
<Code>CDE</Code><Description>(Specific)</Description>
<ActionDate>true</ActionDate>
</Definition>
</Out>
<SampleText>
<string>Test XML Parsing</string>
<string>Check how to convert it to SOAP response</string>
<string>Try if you know</string>
</SampleText>
<GeneralData>
<Pair>
<Name>AllowRefresh</Name>
<Value>Y</Value>
</Pair>
<Pair>
<Name>ListOrder</Name>
<Value>ACCENDING</Value>
</Pair>
</GeneralData>
</Result>
</Response>
</soap:Body>
</soap:Envelope>
当前代码如下所示:
final String CONFIGURATION_FILE="config.xml";
File demoDataFile = new File("/mnt/sdcard/appData");
boolean fileAvailable=false;
File[] dataFiles=demoDataFile.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String filename) {
return filename.endsWith(".xml");
}
});
for (File file : dataFiles) {
if(file.getName().equals(CONFIGURATION_FILE))
{
fileAvailable=true;
}
}
if(fileAvailable)
{
//**What to do?**
}
else
{
//Create the envelope
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
//Put request object into the envelope
envelope.setOutputSoapObject(request);
//Set other properties
envelope.encodingStyle = SoapSerializationEnvelope.XSD;
envelope.dotNet = true;
String method="test";
synchronized (transportLockObject)
{
String soapAction = "http://testuser.com/webservices/response/"+method;
try {
transport.call(soapAction, envelope);
} catch (SSLHandshakeException she) {
she.printStackTrace();
SecurityService.initSSLSocketFactory(ctx);
transport.call(soapAction, envelope);
}
}
//Get the response
Object response = envelope.getResponse();
//Check if response is available... if yes parse the response
if (response != null)
{
if (sampleResponse != null)
{
sampleResponse.parse(response);
}
}
else
{
// Throw no response exception
throw new NoResponseException("No response received for " + method + " operation");
}
}
最佳答案
您可以扩展 HttpTransportSE
类并覆盖方法 call
,如下所示:
public void call(String soapAction, SoapEnvelope envelope) throws IOException, XmlPullParserException
{
if(localFileAvailable)
{
InputStream is = new FileInputStream(fileWithXml);
parseResponse(envelope, is);
is.close();
}
else
{
super.call(soapAction, envelope);
}
}
关于java - 如何将本地 xml 文件转换为 org.ksoap2.serialization.SoapObject?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17920015/
已尝试使用 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
我是一名优秀的程序员,十分优秀!