PHP使用SOAP调用API操作示例


Posted in PHP onDecember 25, 2018

本文实例讲述了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 "<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 = 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_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;

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

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

PHP 相关文章推荐
dedecms防止FCK乱格式化你的代码的修改方法
Mar 17 PHP
攻克CakePHP系列二 表单数据显示
Oct 22 PHP
PHP中通过加号合并数组的一个简单方法分享
Jan 27 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
Jun 13 PHP
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
Aug 01 PHP
3款值得推荐的微信开发开源框架
Oct 28 PHP
分享最受欢迎的5款PHP框架
Nov 27 PHP
php实现在多维数组中查找特定value的方法
Jul 29 PHP
PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图
May 15 PHP
PHP实现SMTP邮件的发送实例
Sep 27 PHP
PHP+Ajax简单get验证操作示例
Mar 02 PHP
PHP实现基本留言板功能原理与步骤详解
Mar 26 PHP
详解PHP实现支付宝小程序用户授权的工具类
Dec 25 #PHP
PHP正则匹配到2个字符串之间的内容方法
Dec 24 #PHP
PHP基于PDO扩展操作mysql数据库示例
Dec 24 #PHP
PHP封装的page分页类定义与用法完整示例
Dec 24 #PHP
tp5(thinkPHP5)框架连接数据库的方法示例
Dec 24 #PHP
php workerman定时任务的实现代码
Dec 23 #PHP
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
Dec 21 #PHP
You might like
中国广播史趣谈 — 几个历史第一次
2021/03/01 无线电
关于PHP内存溢出问题的解决方法
2013/06/25 PHP
PHP递归获取目录内所有文件的实现方法
2016/11/01 PHP
Laravel Eloquent ORM 实现查询表中指定的字段
2019/10/17 PHP
jquery拖动插件(jquery.drag)使用介绍
2013/06/18 Javascript
调试代码导致IE出错的避免方法
2014/04/04 Javascript
一个简单的jQuery计算器实现了连续计算功能
2014/07/21 Javascript
JavaScript中实现PHP的打乱数组函数shuffle实例
2014/10/11 Javascript
浅析node.js中close事件
2014/11/26 Javascript
JavaScript的MVVM库Vue.js入门学习笔记
2016/05/03 Javascript
ECMAScript6快速入手攻略
2016/07/18 Javascript
JS实用的带停顿的逐行文本循环滚动效果实例
2016/11/23 Javascript
利用canvas实现的加载动画效果实例代码
2017/07/05 Javascript
深入理解ES6 Promise 扩展always方法
2017/09/26 Javascript
详解webpack-dev-server使用http-proxy解决跨域问题
2018/01/13 Javascript
vue首次赋值不触发watch的解决方法
2018/09/11 Javascript
24个解决实际问题的ES6代码片段(小结)
2020/02/02 Javascript
python动态加载变量示例分享
2014/02/17 Python
python+django快速实现文件上传
2016/10/24 Python
Python探索之ModelForm代码详解
2017/10/26 Python
Python实现简单网页图片抓取完整代码实例
2017/12/15 Python
基于Python的Post请求数据爬取的方法详解
2019/06/14 Python
Python实现二叉树的最小深度的两种方法
2019/09/30 Python
css3图片边框border-image的用法
2017/06/30 HTML / CSS
俄罗斯最大的在线手表商店:Bestwatch.ru
2020/01/11 全球购物
渗透攻击的测试步骤
2014/06/07 面试题
汽车检测与维修应届毕业生求职信
2013/10/19 职场文书
法学专业自我鉴定
2014/02/05 职场文书
厂办主管岗位职责范本
2014/02/28 职场文书
2014国庆节标语口号
2014/09/19 职场文书
学校领导干部民主生活会整改方案
2014/09/29 职场文书
写给老师的感谢信
2015/01/20 职场文书
四十年同学聚会致辞
2015/07/28 职场文书
医务人员医德医风心得体会
2016/01/25 职场文书
python执行js代码的方法
2021/05/13 Python
Python自动化爬取天眼查数据的实现
2021/06/15 Python