如何在Android中以XML格式发送SOAP请求和解析SOAP响应? [英] How to send SOAP request and Parse SOAP response in XML format in Android?
问题描述
我对 Android 应用开发非常陌生.在我的新 Android 应用程序中,我想显示一些来自网络服务的数据.这意味着我有一个 SOAP 消息
,我需要解析来自 SOAP 响应的数据.在 iPhone 应用程序中,我非常了解解析 SOAP 消息响应,但是,在 android 中我不知道该怎么做?我在谷歌搜索了很多,得到了一些想法.但是,我对此非常困惑.任何人都可以提出任何最简单的方法来理解 SOAP 发送请求/接收响应并在 Android
中的 SAXParser
中解析(XML 格式
)响应?我已经在我的项目中安装了 ksoap2-android-assembly-2.6.0-jar-with-dependencies.jar
.在这里我找到了一些示例代码,我在这里发布,
Am very new to Android apps development. In my new Android app i want to show some data from webservice. This means i have a SOAP message
, i need to parse the data from SOAP response. In iPhone app i knew very well to parse SOAP message response but, in android i don't know how to do this? I searched lot in Google and get some ideas. But, am very confusing on this. Can anyone please suggest any easiest way to understand SOAP send request/receive response and parse(XML format
) the response in SAXParser
in Android
? I has installed ksoap2-android-assembly-2.6.0-jar-with-dependencies.jar
in my project. Here i found some sample code, i post here,
import java.io.*;
import org.ksoap2.SoapEnvelope;
import org.kxml2.io.KXmlParser;
import org.xmlpull.v1.XmlPullParserException;
public class ParsingSteps
{
public static void main(String[] args)
{
try{
// String msg="<hello>World!</hello>";
String msg = "<SOAP-ENV:Envelope " + "xmlns:SOAP-ENV="http://
www.w3.org/2001/12/soap-envelope" " + "xmlns:xsi="http://www.w3.org/
2001/XMLSchema-instance <http://www.w3.org/%0A2001/XMLSchema-instance>""
+"xmlns:xsd="http://www.w3.org/2001/
XMLSchema"& gt;" +
"<SOAP-ENV:Body>" +
"<result>" +
"<message xsi:type="xsd:string">Hello World</message>" +
"</result>" +
"</SOAP-ENV:Body>" +
"</SOAP-ENV:Envelope>";
// byte[] in= msg.getBytes();
KXmlParser parser=new KXmlParser();
parser.setInput(new StringReader(msg));
SoapEnvelope soapenvelope= new SoapEnvelope
(SoapEnvelope.VER12);
//soapenvelope.parse(parser);
soapenvelope.parseBody(parser);
}
catch (IOException e) {
System.out.println("Error reading URI: " + e.getMessage ());
} catch (XmlPullParserException e) {
System.out.println("Error in parsing: " + e.getMessage ());
}
// String result=parser.getName();
//System.out.println(result);
}
}
这是正确的代码.请对我的问题提出任何建议.请帮我解决这个问题.提前致谢.
Is this correct code. Please give any suggestion on my question. Please help me on this. Thanks in advance.
推荐答案
Google for Ksoap2 教程你会得到很多.这是向 Web 服务发送请求的示例代码.
Google for Ksoap2 tutorial u will get a lot of them . Here is sample code for sending request to web service .
public class WebServicePoc extends Activity{
private static final String SOAP_ACTION = "http://tempuri.org/Arnoid";
private static final String METHOD_NAME = "Arnoid";
private static final String NAMESPACE = "http://tempuri.org/";
private static final String URL = "http://ipaddress:port/UserAuthenticationInterfacer.asmx";
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
HashMap<String, String> a=new HashMap<String, String>();
try {
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("FOSID", "1994");
request.addProperty("IMEINumber", "");
request.addProperty("SIMCardNo", "");
request.addProperty("ApplicationName", "App");
request.addProperty("CurrentVersion", "1.0.0.0");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.setOutputSoapObject(request);
AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(URL);
androidHttpTransport.call(SOAP_ACTION, envelope);
SoapObject result = (SoapObject)envelope.getResponse();
editText=(EditText)findViewById(R.id.text1);
editText.setText(result.toString());
} catch (Exception e) {
e.printStackTrace();
}
对于 xml,请查看 xml 解析器的教程,仅使用 SAX,因为 android 不支持 STAX.对于发送 xml 请求,您可以将 xml 作为字符串发送,然后在服务器端解码.
And for xml pls check tutorial for xml parsers,use SAX only, as STAX is not supported in android . For sending xml request u can send xml as string and then decode on sever side .
这篇关于如何在Android中以XML格式发送SOAP请求和解析SOAP响应?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!