php nuSoap未显示预期结果

lyr7nygr  于 2023-09-29  发布在  PHP
关注(0)|答案(1)|浏览(99)

我是个初学者,还在学习。
我有一个肥皂问题。我试图找出我的代码有什么问题,因为我认为所有的教程,我已经搜索的基础上,它是正确的。但是当我运行client.php时,它仍然没有显示来自server.php的结果。
PHP版本PHP/8.1.6
nusoap版本NuSOAP/0.9.11
这是我的server.php

<?php
 
// mengincludekan file berisi class nusoap
require_once 'nusoap.php';

// instansiasi class soap untuk server
$server = new soap_server();
$server->configureWSDL('server', 'urn:server');

// meregistrasi 'method' untuk proses penjumlahan dengan nama 'jumlahkan'
$server->register('jumlahkan');

 
// detil isi method 'jumlahkan'
function jumlahkan($x, $y) {
    return 'jumlahkan' . $x + $y ;
}
 
// memberikan response service
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA: '';
$server->service(file_get_contents('php://input'));

?>

这是我的client.php

<?php
 
require_once 'nusoap.php';

$wsdl = "http://localhost/WS/nusoap/server.php?wsdl";

// instansiasi obyek untuk class nusoap client
$client = new nusoap_client($wsdl, 'wsdl');

$client->soap_defencoding = 'UTF-8';
$client->decode_utf8 = FALSE;

$err = $client->getError();

if($err){
echo 'Error'.$err;
}
 
// dua bilangan yang akan dijumlahkan atau dikurangi
$bil1 = 10;
$bil2 = 25;

// proses call method 'jumlahkan' di script server.php yang ada di komputer B
$result = $client->call('jumlahkan', array('x' => $bil1, 'y' => $bil2));

echo "<p>Hasil penjumlahan ".$bil1." dan ".$bil2." adalah ".$result."</p>";
//print_r($result); 
 
 
// menampilkan format XML hasil response
echo '<h2>Respond</h2>';
echo '<pre>'.$client->response.'</pre>';

echo '<h2>Request</h2>';
echo '<pre>'.$client->request.'</pre>';
 
?>

误差

Fatal error:  Uncaught ArgumentCountError: Too few arguments to function jumlahkan(), 0 passed in D:\xampp\htdocs\WS\nusoap\nusoap.php on line 4204 and exactly 2 expected in D:\xampp\htdocs\WS\nusoap\server.php:17
Stack trace:
#0 D:\xampp\htdocs\WS\nusoap\nusoap.php(4204): jumlahkan()
#1 D:\xampp\htdocs\WS\nusoap\nusoap.php(3825): nusoap_server->invoke_method()
#2 D:\xampp\htdocs\WS\nusoap\server.php(26): nusoap_server->service('<?xml version="...')
#3 {main}
  thrown in D:\xampp\htdocs\WS\nusoap\server.php on line 17
uxhixvfz

uxhixvfz1#

我重写了你的代码并修复了一些问题。我测试了结果,它在我这边工作得很好。你可以比较一下你的代码,这样你就可以知道你的代码有什么问题了。
server.php

<?php

ini_set('display_errors', 1);

// mengincludekan file berisi class nusoap
require_once 'nusoap.php';

// instansiasi class soap untuk server
$server = new soap_server();
$server->configureWSDL('server', 'urn:server');

// meregistrasi 'method' untuk proses penjumlahan dengan nama 'jumlahkan'
$server->register('jumlahkan', array('x' => 'xsd:int', 'y' => 'xsd:int'), array('return' => 'xsd:int'));

// detil isi method 'jumlahkan'
function jumlahkan($x, $y) {
    return ($x + $y);
}
 
// memberikan response service
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA: '';
$server->service(file_get_contents('php://input'));

?>

client.php

<?php

ini_set('display_errors', 1);
require_once 'nusoap.php';

$wsdl = "http://localhost/WS/nusoap/server.php?wsdl";

// instansiasi obyek untuk class nusoap client
$client = new nusoap_client($wsdl, 'wsdl');

$client->soap_defencoding = 'UTF-8';
$client->decode_utf8 = FALSE;

$err = $client->getError();

if($err){
echo 'Error'.$err;
}
 
// dua bilangan yang akan dijumlahkan atau dikurangi
$bil1 = 10;
$bil2 = 25;

// proses call method 'jumlahkan' di script server.php yang ada di komputer B
$result = $client->call('jumlahkan', array($bil1, $bil2));
echo "<p>Hasil penjumlahan ".$bil1." dan ".$bil2." adalah ".$result."</p>";
//print_r($result);
 
// menampilkan format XML hasil response
echo '<h2>Respond</h2>';
echo '<pre>'.$client->response.'</pre>';

echo '<h2>Request</h2>';
echo '<pre>'.$client->request.'</pre>';

?>

相关问题