import java.io.Serializable;
public class Person implements Serializable {
private static final long serialVersionUID = -410186774891162281L;
private String username;
private int age;
private boolean sex; // true=male, false=female
// Getter/Setter 略...
}
public class UserLogin {
public Person login(String loginName, String loginPasswd) {
Person p = new Person();
if ("laoli".equals(loginName) && "111111".equals(loginPasswd)) {
p.setUsername("老李");
p.setAge(55);
p.setSex(true);
} else if ("xiaoli".equals(loginName) && "123456".equals(loginPasswd)) {
p.setUsername("小麗");
p.setAge(23);
p.setSex(false);
} else {
return null;
}
return p;
}
}
部署至 Axis,WSDL 地址類似:https://localhost:8080/axis/services/UserLoginWS?wsdl
<?php
header("Content-Type: text/html; charset=utf-8");
require_once "libs/nusoap.php"; // 需下載 NuSOAP 庫
$wsdl = 'https://localhost:8080/axis/services/UserLoginWS?wsdl';
$client = new nusoap_client($wsdl, true); // true = 使用 WSDL
$client->soap_defencoding = 'utf-8';
$client->decode_utf8 = false;
$client->xml_encoding = 'utf-8';
// 檢查客戶端建立錯誤
if ($err = $client->getError()) {
die("<h2>Constructor error</h2><pre>$err</pre>");
}
// 呼叫遠端方法
$param = ['loginName' => 'laoli', 'loginPasswd' => '111111'];
$result = $client->call('login', $param);
// 統一錯誤處理
if ($client->fault) {
echo "<h2>Fault</h2><pre>"; print_r($result); echo "</pre>";
} else {
$err = $client->getError();
if ($err) {
echo "<h2>Error</h2><pre>$err</pre>";
} else {
echo "<h2>Result</h2><pre>"; print_r($result); echo "</pre>";
}
}
// 第二次呼叫示範
$param = ['loginName' => 'xiaoli', 'loginPasswd' => '123456'];
$result = $client->call('login', $param);
// 同樣錯誤處理...
?>
| 屬性 | 用途 |
|---|---|
soap_defencoding | SOAP 請求預設編碼 |
decode_utf8 | false 保持 UTF-8 不自動解碼為 ISO-8859-1 |
xml_encoding | XML 文檔宣告編碼 |
xml_encoding 設為 utf-8。SoapClient(PHP 5+)。default_socket_timeout 或 NuSOAP $client->timeout。SoapClient,效能更好、無需第三方庫,語法:$client = new SoapClient($wsdl); $result = $client->login($param);