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 相关文章推荐
php防攻击代码升级版
Dec 29 PHP
mcrypt启用 加密以及解密过程详细解析
Aug 07 PHP
PHP计算一年多少个星期和每周的开始和结束日期
Jul 01 PHP
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
Nov 06 PHP
Yii实现自动加载类地图的方法
Apr 01 PHP
四个PHP非常实用的功能
Sep 29 PHP
php生成唯一数字id的方法汇总
Nov 18 PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
Sep 23 PHP
php中遍历二维数组并以表格的形式输出的方法
Jan 03 PHP
PHP后期静态绑定之self::限制实例分析
Dec 21 PHP
ThinkPHP3.2框架操作Redis的方法分析
May 05 PHP
PHP实现的微信APP支付功能示例【基于TP5框架】
Sep 16 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
phpMyAdmin 安装教程全攻略
2007/03/19 PHP
php实现将字符串按照指定距离进行分割的方法
2015/03/14 PHP
PHP foreach遍历多维数组实现方式
2016/11/16 PHP
Thinkphp开发--集成极光推送
2017/09/15 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
制作高质量的JQuery Plugin 插件的方法
2010/04/20 Javascript
jQuery实现动画效果circle实例
2015/08/06 Javascript
JavaScript中this详解
2015/09/01 Javascript
详解JavaScript数组的操作大全
2015/10/19 Javascript
JavaScript常用本地对象小结
2016/03/28 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
2016/06/09 Javascript
PHP实现记录代码运行时间封装类实例教程
2017/05/08 Javascript
View.post() 不靠谱的地方你知道多少
2017/08/29 Javascript
ionic grid(栅格)九宫格制作详解
2018/06/30 Javascript
js字符串类型String常用操作实例总结
2019/07/05 Javascript
VUE实现密码验证与提示功能
2019/10/18 Javascript
使用 Vue-TCB 快速在 Vue 应用中接入云开发的方法
2020/02/10 Javascript
使用vue-cli3+typescript的项目模板创建工程的教程
2020/02/28 Javascript
[02:12]2015国际邀请赛 SHOWOPEN
2015/08/05 DOTA
[03:30]完美盛典趣味短片 CSGO2019年度名场面
2019/12/07 DOTA
Python实现方便使用的级联进度信息实例
2015/05/05 Python
Python变量和数据类型详解
2017/02/15 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
2018/05/21 Python
python实现决策树分类
2018/08/30 Python
TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片
2019/03/14 Python
Python调用shell命令常用方法(4种)
2020/05/11 Python
酷瑞网络科技面试题
2012/03/30 面试题
在Ajax应用中信息是如何在浏览器和服务器之间传递的
2016/05/31 面试题
制冷与电控专业应届生求职信
2013/11/11 职场文书
优秀教师工作感言
2014/02/16 职场文书
品德评语大全
2014/05/05 职场文书
导游词之岳阳楼
2019/09/25 职场文书
《天净沙·秋思》教学反思三篇
2019/11/02 职场文书
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
2021/04/16 PHP
Vue的列表之渲染,排序,过滤详解
2022/02/24 Vue.js
Python中使用tkFileDialog实现文件选择、保存和路径选择
2022/05/20 Python