以下是使用 SOAP 协议调用 WebService 的基本步骤:
1. 添加网络权限:
在 AndroidManifest.xml 文件中添加网络权限:
<uses-permission android:name="android.permission.INTERNET" />
2. 使用 HttpURLConnection 发送 SOAP 请求:
import android.os.AsyncTask;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class WebServiceTask extends AsyncTask<Void, Void, String> {
@Override
protected String doInBackground(Void... voids) {
try {
return callWebService();
} catch (Exception e) {
return "Error: " + e.getMessage();
}
}
private String callWebService() throws IOException {
String soapEndpointUrl = "Your SOAP endpoint URL";
String soapRequest = "Your SOAP request XML";
URL url = new URL(soapEndpointUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "text/xml;charset=UTF-8");
connection.setRequestProperty("SOAPAction", "Your SOAP Action");
OutputStream outputStream = connection.getOutputStream();
outputStream.write(soapRequest.getBytes("UTF-8"));
outputStream.flush();
outputStream.close();
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
return response.toString();
} else {
return "Error: " + responseCode;
}
}
@Override
protected void onPostExecute(String result) {
// 处理 WebService 调用结果
// result 包含服务器响应或错误消息
}
}
在这个例子中,callWebService 方法中,设置请求属性,包括 Content-Type、SOAPAction 等,并将 SOAP 请求体写入输出流发送到 WebService 端点。接着,获取服务器的响应并读取返回的数据。
3. 使用 AsyncTask 调用 WebService:
WebServiceTask webServiceTask = new WebServiceTask();
webServiceTask.execute();
请确保将 "Your SOAP endpoint URL" 替换为实际的 WebService 端点 URL,将 "Your SOAP request XML" 替换为实际的 SOAP 请求 XML,将 "Your SOAP Action" 替换为实际的 SOAP Action。
对于使用 RESTful API 的情况,可以使用 HttpURLConnection 或者现代的网络库(如 OkHttp)发送 HTTP 请求。RESTful API 的请求和响应通常以 JSON 或 XML 格式进行数据交换。
import android.os.AsyncTask;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class RestApiTask extends AsyncTask<Void, Void, String> {
@Override
protected String doInBackground(Void... voids) {
try {
return callRestApi();
} catch (Exception e) {
return "Error: " + e.getMessage();
}
}
private String callRestApi() throws IOException {
String apiUrl = "Your REST API URL";
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url(apiUrl).build();
Response response = client.newCall(request).execute();
if (response.isSuccessful()) {
return response.body().string();
} else {
return "Error: " + response.code();
}
}
@Override
protected void onPostExecute(String result) {
// 处理 RESTful API 调用结果
// result 包含服务器响应或错误消息
}
}
在这个例子中,使用 OkHttp 发送 GET 请求到 RESTful API 的 URL,并获取服务器的响应。同样,你需要将 "Your REST API URL" 替换为实际的 RESTful API 的 URL。
在实际应用中,可以根据具体的 WebService 或 RESTful API 的要求,构建相应的请求体、处理响应体,并根据业务逻辑进行相应的处理。
转载请注明出处:http://www.zyzy.cn/article/detail/15199/Android