0

私はPHP Webサービスを書きました。機能は次のとおりです。

function get_device_info(){
    $conn= mysql_connect("localhost", "admin", "123456") or die("Could not connect: " . mysql_error());
    mysql_select_db('devices',$conn);
    $sql="select id,description,hostname,status_rec_date,availability from host";
    $query=mysql_query($sql);
    while($myrow = mysql_fetch_array($result)){
        $host_msg[$i]=$myrow;
        $i++;
    }
   return $host_msg;
   mysql_close($conn);

}

次に、この Web サービスを呼び出す SOAP クライアントを Java で作成しました。

import java.net.MalformedURLException;  
import java.rmi.RemoteException;  
import javax.xml.rpc.ServiceException;  
import org.apache.axis.client.Call;  
import org.apache.axis.client.Service;
public class javasoapclient {
    public static void main(String[] args) throws ServiceException, MalformedURLException, RemoteException {  
        String serviceUrl = "http://192.168.1.44/webservices/serverSoap.php";  
        Service service = new Service();  
        Call call = (Call) service.createCall();  
        call.setTargetEndpointAddress(new java.net.URL(serviceUrl));  
        call.setOperationName("get_device_info");
        String reVal = call.invoke(new Object[] {}).toString();
        System.out.println(reVal);
    }
}

配列を取得できません。私はPHPの初心者です。誰でも助けることができますか?

よろしくお願いします!</p>

4

1 に答える 1

0

それはSOAPの仕組みではありません。SOAPには独自の構造があります。

<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Body xmlns:m="http://www.example.org/stock">
  <m:GetStockPrice>
    <m:StockName>IBM</m:StockName>
  </m:GetStockPrice>
</soap:Body>

</soap:Envelope>

返されるのは単純な配列です。

この配列をJavaで取得するには、HttpClientを使用することをお勧めします

于 2012-07-03T10:54:07.437 に答える