soap函数没有在php中返回字符串

时间:2016-09-15 10:28:15

标签: php curl soap server client

我有一个脚本,它返回格式为

的字符串
 {"showStatus":[{"large":980,"small":200,"title":"New Arrival<\/span>gothrough:   Red","status":6,"Id":87643}],"totalStatus  kers":2}1

我有curl代码,在登录后从其他网站获取此数据。我正在开发一个肥皂服务器,以便与其他服务器共享此细节,而不是再次登录并获取此数据。但我没有通过soap客户端在其他服务器上获取此数据。我的肥皂服务器代码是

<?php

 $server = new SoapServer(null,
                     array('uri' => "urn://mytest/result"));

 function get_data()
 {
 $cookie = 'cookie.txt';
 $url1="http://example.com/city/getdata/";
 $ch = curl_init();
 curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Macintosh; Intel Mac OS X     10_6_8) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112   Safari/534.30');
curl_setopt ($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_COOKIEJAR,       $cookie);
curl_setopt($ch, CURLOPT_COOKIEFILE,      $cookie);
 curl_setopt($ch, CURLOPT_URL, $url1);
$result = curl_exec($ch);
return $result;
}

$server->addFunction('get_data');
$server->handle();
?>

其他服务器上的soap客户端正在使用此代码     

 $client = new SoapClient(null, array(
  'location' => "http://x.x.x.x/soapserver/soapserver.php",
  'uri'      => "urn://mytest/result"));

 $result = $client->
    __soapCall("get_data");

echo $result;
?>

我输出的是“1”而不是那个字符串。如果您知道此

中的任何错误,请发表评论

1 个答案:

答案 0 :(得分:1)

您需要设置CURLOPT_RETURNTRANSFER才能获得成功结果。

curl_exec

之前添加此行
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  

curl_exec()成功时返回TRUE,失败时返回FALSE。但是,如果设置了CURLOPT_RETURNTRANSFER选项,它将返回结果   成功时,失败就错了。