Android,通过 HTTP POST (SOAP) 发送 XML

作者:编程家 分类: android 时间:2025-12-26

发送XML数据是Android开发中常见的需求之一,特别是在与服务器进行交互时。常见的方式是通过HTTP POST请求发送XML数据,其中使用SOAP协议来封装数据。本文将介绍如何在Android中 XML数据,并通过HTTP POST方式发送,以实现与服务器的交互。

首先,我们需要创建一个XML文件,用于封装我们要发送的数据。XML是一种标记语言,可以将数据按照一定的结构进行描述。在Android中,我们可以使用XmlSerializer类来生成XML文件。下面是一个简单的例子:

java

XmlSerializer xmlSerializer = Xml.newSerializer();

StringWriter writer = new StringWriter();

xmlSerializer.setOutput(writer);

xmlSerializer.startDocument("UTF-8", true);

xmlSerializer.startTag(null, "root");

xmlSerializer.startTag(null, "name");

xmlSerializer.text("John");

xmlSerializer.endTag(null, "name");

xmlSerializer.startTag(null, "age");

xmlSerializer.text("25");

xmlSerializer.endTag(null, "age");

xmlSerializer.endTag(null, "root");

xmlSerializer.endDocument();

String xmlString = writer.toString();

上面的代码使用XmlSerializer类生成一个XML文件,其中包含一个root节点,以及name和age两个子节点。这些节点的值分别设置为"John"和"25"。生成的XML文件保存在一个字符串中,可以用于后续的发送操作。

接下来,我们需要通过HTTP POST方式将生成的XML数据发送给服务器。Android提供了HttpClient类来处理网络请求。下面是一个发送HTTP POST请求的例子:

java

HttpClient httpClient = new DefaultHttpClient();

HttpPost httpPost = new HttpPost("http://example.com/api");

List params = new ArrayList<>();

params.add(new BasicNameValuePair("xmlData", xmlString));

try {

httpPost.setEntity(new UrlEncodedFormEntity(params));

HttpResponse response = httpClient.execute(httpPost);

// 处理服务器返回的响应数据

// ...

} catch (IOException e) {

e.printStackTrace();

}

上面的代码创建了一个HttpPost对象,并设置了请求的URL。然后,我们将生成的XML数据作为参数添加到HttpPost对象中。最后,调用HttpClient的execute方法发送请求,并获取服务器的响应数据。

通过以上步骤,我们可以 XML数据,并通过HTTP POST方式发送给服务器。这样,我们就可以实现与服务器的交互,完成数据的传输和处理。

案例代码:

java

import org.apache.http.HttpResponse;

import org.apache.http.NameValuePair;

import org.apache.http.client.HttpClient;

import org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.message.BasicNameValuePair;

import org.xmlpull.v1.XmlSerializer;

import java.io.IOException;

import java.io.StringWriter;

import java.util.ArrayList;

import java.util.List;

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

// 生成XML数据

XmlSerializer xmlSerializer = Xml.newSerializer();

StringWriter writer = new StringWriter();

try {

xmlSerializer.setOutput(writer);

xmlSerializer.startDocument("UTF-8", true);

xmlSerializer.startTag(null, "root");

xmlSerializer.startTag(null, "name");

xmlSerializer.text("John");

xmlSerializer.endTag(null, "name");

xmlSerializer.startTag(null, "age");

xmlSerializer.text("25");

xmlSerializer.endTag(null, "age");

xmlSerializer.endTag(null, "root");

xmlSerializer.endDocument();

} catch (IOException e) {

e.printStackTrace();

}

String xmlString = writer.toString();

// 发送HTTP POST请求

HttpClient httpClient = new DefaultHttpClient();

HttpPost httpPost = new HttpPost("http://example.com/api");

List params = new ArrayList<>();

params.add(new BasicNameValuePair("xmlData", xmlString));

try {

httpPost.setEntity(new UrlEncodedFormEntity(params));

HttpResponse response = httpClient.execute(httpPost);

// 处理服务器返回的响应数据

// ...

} catch (IOException e) {

e.printStackTrace();

}

}

}

在上面的例子中,我们在MainActivity的onCreate方法中完成了XML数据的生成和HTTP POST请求的发送。请注意,由于网络请求需要在后台线程中执行,最好将上述代码放在一个异步任务中执行,以避免阻塞UI线程。

本文介绍了如何在Android中 XML数据,并通过HTTP POST方式发送给服务器。通过这种方式,我们可以实现与服务器的交互,完成数据的传输和处理。这对于开发需要与服务器进行数据交换的Android应用程序来说非常重要。希望本文对大家有所帮助。