• 售前

  • 售后

热门帖子
入门百科

PHP使用SOAP调用API操作示例

[复制链接]
王丽梅 显示全部楼层 发表于 2021-10-26 13:13:00 |阅读模式 打印 上一主题 下一主题
本文实例陈诉了PHP利用SOAP调用API利用。分享给大家供大家参考,详细如下:
  1. /*图片转换为 base64格式编码*/
  2. function base64EncodeImage($image_file)
  3. {
  4.   $base64_image = '';
  5.   $image_info = getimagesize($image_file);
  6.   $image_data = fread(fopen($image_file, 'r'), filesize($image_file));
  7.   //$base64_image = 'data:' . $image_info['mime'] . ';base64,' . chunk_split(base64_encode($image_data));
  8.   $base64_image = chunk_split(base64_encode($image_data));
  9.   return $base64_image;
  10. }
  11. $strPhotoFront_base64 = base64EncodeImage("static/img/a.png");
  12. $strPhotoRear_base64 = base64EncodeImage("static/img/b.png");
  13. $paras["strPhotoFront"] = $strPhotoFront_base64;
  14. $paras["strPhotoRear"] = $strPhotoRear_base64;
  15. $paras["strSecretKey"] = "";
  16. $wsdl = "";
  17. $client = new SoapClient($wsdl);
  18. $soapParas = array($paras);
  19. $outString = $client->__soapCall("UploadPhotoId", $soapParas);
  20. $obj = simplexml_load_string($outString->UploadPhotoIdResult->any);
  21. echo($obj->ExtraInfo);
  22. echo "<br/>";
  23. echo($obj->ExtraCode);
  24. echo "<br/>";
  25. echo($obj->Code);
  26. echo "<br/>";
  27. 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实体
  1. libxml_disable_entity_loader(false);
复制代码
语句
  1. libxml_disable_entity_loader(false);
  2. $opts = array(
  3.   'ssl'  => array(
  4.       'verify_peer'     => false
  5.     ),
  6.   'https' => array(
  7.       'curl_verify_ssl_peer' => false,
  8.       'curl_verify_ssl_host' => false
  9.    )
  10. );
  11. $streamContext = stream_context_create($opts);
  12. $client = new SoapClient("https://urlToSoapWs",
  13. array(
  14.    'stream_context'  => $streamContext
  15. ));
复制代码
禁止引用外部xml实体
  1. 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程序没有任何错误,后端的数据库也很正常,从网上查了许多资料,都是说要修改
  1. proxy_read_timeout
复制代码
,
  1. proxy_send_timeout
复制代码
  1. proxy_buffer
复制代码
几个相关设置的值。
如下配置,要放在server配置节之内
  1. large_client_header_buffers 4 16k;
  2. client_max_body_size 30m;
  3. client_body_buffer_size 128k;
  4. proxy_connect_timeout 300;
  5. proxy_read_timeout 300;
  6. proxy_send_timeout 300;
  7. proxy_buffer_size 64k;
  8. proxy_buffers   4 32k;
  9. proxy_busy_buffers_size 64k;
  10. proxy_temp_file_write_size 64k;
  11. fastcgi_connect_timeout 300;
  12. fastcgi_read_timeout 300;
  13. fastcgi_send_timeout 300;
  14. fastcgi_buffer_size 64k;
  15. fastcgi_buffers   4 32k;
  16. fastcgi_busy_buffers_size 64k;
  17. fastcgi_temp_file_write_size 64k;
复制代码
你可以看到上面是proxy_fastcgi_两种配置,就是说如果你的nginx后面是proxy,就设置proxy相关的配置,如果是fastcgi就设置fastcgi相关的配置。
更多关于PHP相关内容感爱好的读者可查看本站专题:《php文件利用总结》、《PHP数据布局与算法教程》、《php程序设计算法总结》、《PHP数组(Array)利用本领大全》、《php字符串(string)用法总结》及《php常见数据库利用本领汇总》
渴望本文所述对大家PHP程序设计有所帮助。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作