php tongjiapi 使用_PHP使用SOAP调用API操作示例

本文介绍了一个PHP使用SOAP调用API的具体示例,并提供了将图片转换为base64编码的方法。此外还讨论了解决SoapClient类未找到的问题及SOAP-ERROR的常见解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文实例讲述了PHP使用SOAP调用API操作。分享给大家供大家参考,具体如下:

/*图片转换为 base64格式编码*/

function base64EncodeImage($image_file)

{

$base64_image = '';

$image_info = getimagesize($image_file);

$image_data = fread(fopen($image_file, 'r'), filesize($image_file));

//$base64_image = 'data:' . $image_info['mime'] . ';base64,' . chunk_split(base64_encode($image_data));

$base64_image = chunk_split(base64_encode($image_data));

return $base64_image;

}

$strPhotoFront_base64 = base64EncodeImage("static/img/a.png");

$strPhotoRear_base64 = base64EncodeImage("static/img/b.png");

$paras["strPhotoFront"] = $strPhotoFront_base64;

$paras["strPhotoRear"] = $strPhotoRear_base64;

$paras["strSecretKey"] = "";

$wsdl = "";

$client = new SoapClient($wsdl);

$soapParas = array($paras);

$outString = $client->__soapCall("UploadPhotoId", $soapParas);

$obj = simplexml_load_string($outString->UploadPhotoIdResult->any);

echo($obj->ExtraInfo);

echo "
";

echo($obj->ExtraCode);

echo "
";

echo($obj->Code);

echo "
";

echo($obj->Message);

注:出现提示:Fatal error: Class 'SoapClient' not found的情况,可参考《PHP Class SoapClient not found解决方法》

附:SOAP-ERROR: Parsing WSDL:Couldn't load from “xxxxxxx” 解决方案

用php的soapclient连接第三方的webservice,是https的,连接报错SOAP-ERROR: Parsing WSDL:Couldn't load from “xxxxxxx”

首先排查 php的soap扩展是否安装

openssl扩展

服务器本身安装openssl

排除第三方对本服务器的IP限制

最后怀疑是https需要ssl验证,而本机没有pem文件

可以通过如下设置,忽略ssl验证

verify_peer:指定是否验证ssl,默认为true

将verify_peer设为false

另外,允许引用外部xml实体

加libxml_disable_entity_loader(false);语句

libxml_disable_entity_loader(false);

$opts = array(

'ssl' => array(

'verify_peer' => false

),

'https' => array(

'curl_verify_ssl_peer' => false,

'curl_verify_ssl_host' => false

)

);

$streamContext = stream_context_create($opts);

$client = new SoapClient("https://urlToSoapWs",

array(

'stream_context' => $streamContext

));

禁止引用外部xml实体

libxml_disable_entity_loader(true);

nginx 报错 upstream timed out (110: Connection timed out)解决方案

nginx每隔几个小时就会报下面的错误:

2013/05/18 21:21:36 [error] 11618#0: *324911 upstream timed out (110: Connection timed out) while reading response header from upstream,

client: 42.62.37.56, server: localhost, request: “GET /code-snippet/2747/HTML5-Canvas-usage HTTP/1.0”,

upstream: “fastcgi://127.0.0.1:9002”, host: “outofmemory.cn”, referrer: “http://outofmemory.cn/code-snippet/tagged/canvas“

报这个错误之后,整个服务器就不响应了,但是nginx后面的webpy程序没有任何错误,后端的数据库也很正常,从网上查了很多资料,都是说要修改proxy_read_timeout,proxy_send_timeout和proxy_buffer几个相关设置的值。

如下配置,要放在server配置节之内

large_client_header_buffers 4 16k;

client_max_body_size 30m;

client_body_buffer_size 128k;

proxy_connect_timeout 300;

proxy_read_timeout 300;

proxy_send_timeout 300;

proxy_buffer_size 64k;

proxy_buffers   4 32k;

proxy_busy_buffers_size 64k;

proxy_temp_file_write_size 64k;

fastcgi_connect_timeout 300;

fastcgi_read_timeout 300;

fastcgi_send_timeout 300;

fastcgi_buffer_size 64k;

fastcgi_buffers   4 32k;

fastcgi_busy_buffers_size 64k;

fastcgi_temp_file_write_size 64k;

你可以看到上面是proxy_和fastcgi_两种配置,就是说如果你的nginx后面是proxy,就设置proxy相关的配置,如果是fastcgi就设置fastcgi相关的配置。

希望本文所述对大家PHP程序设计有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值