SOAP は wsdl Web サービスに情報を送信するための便利な PHP ライブラリであることを学びました。Web サービスに送信する XML シートを作成しています。私の友人が Web サービスを作成しました。彼は、文字列を受け取ると言っています。私は彼に XML シートの文字列を送信しようとしています。彼が XML をコピーして貼り付けると、それは正しいのですが、Web サービスを使用しようとすると、彼が取得するのは空のポインターだけです。
while($row=mysql_fetch_array($result))
{
//Product Id is called ProductID in the XML
$product_id = $row['product_id'];
//Final price is called SalesPrice in the XML
$final_price = $row['final_price'];
echo $final_price.'<br>';
//qty is called Quantity in the XML
$qty = $row['qty'];
echo $qty.'<br>';
//Purchase cost is called PurchaseCost in the XML
$purchase_cost = $row['purchase_cost'];
echo $purchase_cost.'<br>';
$xml_output .="<SalesOrderLine>";
$xml_output.='<ProductID>'.$product_id.'</ProductID>';
$xml_output.='<Quantity>'.$qty.'</Quantity>';
$xml_output.='<SalesPrice>'.$final_price.'</SalesPrice>';
$xml_output.='<PurchaseCost>'.$purchase_cost.'</PurchaseCost>';
// Escaping illegal characters
$xml_output.='</SalesOrderLine>';
//$amount = $amount + $final_price;
//$i++;
}
$xml_output .="</SalesOrder>";
$xml = new SimpleXMLElement($xml_output);
$xml->asXML();
echo $xml;
try {
$client = new SoapClient("http://*&#^%(@%(*#(#$%)%CreateDB?wsdl");
$result = $client->addSalesOrder($xml);
} catch (SoapFault $e) {
var_dump(libxml_get_last_error());
var_dump($e);
}
//$result = $client->addSalesOrder($xml_output);
if (is_soap_fault($result)) {
trigger_error("SOAP Fault: (faultcode: {$result->faultcode}, faultstring: {$result->faultstring})", E_USER_ERROR);
}
$xml_output 文字列全体をエコー出力すると、コードを調べると、それが XML シートになっていることがわかります。SimpleXML ライブラリを使用しても使用しなくても、関数を Web サービスに渡すことはできません。文字列を保持したまま、XML シートである Web サービスに文字列を安全に転送するにはどうすればよいでしょうか?