怎么在PHP中利用SOAP调用API

今天就跟大家聊聊有关怎么在PHP中利用SOAP调用API,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

具体如下:

怎么在PHP中利用SOAP调用API

/*图片转换为base64格式编码*/
functionbase64EncodeImage($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=newSoapClient($wsdl);
$soapParas=array($paras);
$outString=$client->__soapCall("UploadPhotoId",$soapParas);
$obj=simplexml_load_string($outString->UploadPhotoIdResult->any);
echo($obj->ExtraInfo);
echo"<br/>";
echo($obj->ExtraCode);
echo"<br/>";
echo($obj->Code);
echo"<br/>";
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=newSoapClient("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_timeoutproxy_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;

看完上述内容,你们对怎么在PHP中利用SOAP调用API有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注恰卡编程网行业资讯频道,感谢大家的支持。

发布于 2021-03-26 01:49:43
收藏
分享
海报
0 条评论
164
上一篇:如何使用shell脚本安装lnmp 下一篇:怎么在java中使用PDFRenderer实现一个预览PDF功能
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码