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"
"; echo($obj->ExtraCode); echo"
"; echo($obj->Code); echo"
"; echo($obj->Message);
注:出现提示:Fatalerror:Class'SoapClient'notfound的情况,可参考《PHPClassSoapClientnotfound解决方法》
附:
用php的soapclient连接第三方的webservice,是https的,连接报错SOAP-ERROR:ParsingWSDL:Couldn'tloadfrom“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报错upstreamtimedout(110:Connectiontimedout)解决方案
nginx每隔几个小时就会报下面的错误:
2013/05/1821:21:36[error]11618#0:*324911upstreamtimedout(110:Connectiontimedout)whilereadingresponseheaderfromupstream,
client:42.62.37.56,server:localhost,request:“GET/code-snippet/2747/HTML5-Canvas-usageHTTP/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_buffers416k;
client_max_body_size30m;
client_body_buffer_size128k;
proxy_connect_timeout300;
proxy_read_timeout300;
proxy_send_timeout300;
proxy_buffer_size64k;
proxy_buffers 432k;
proxy_busy_buffers_size64k;
proxy_temp_file_write_size64k;
fastcgi_connect_timeout300;
fastcgi_read_timeout300;
fastcgi_send_timeout300;
fastcgi_buffer_size64k;
fastcgi_buffers 432k;
fastcgi_busy_buffers_size64k;
fastcgi_temp_file_write_size64k;
你可以看到上面是proxy_和fastcgi_两种配置,就是说如果你的nginx后面是proxy,就设置proxy相关的配置,如果是fastcgi就设置fastcgi相关的配置。
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php文件操作总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。