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项目的方法
Oct 09 PHP
PHP读写文件的方法(生成HTML)
Nov 27 PHP
php+dojo 的数据库保存拖动布局的一个方法dojo 这里下载
Mar 07 PHP
兼容性比较好的PHP生成缩略图的代码
Jan 12 PHP
php获取301跳转URL简单实例
Dec 16 PHP
php使用gettimeofday函数返回当前时间并存放在关联数组里
Mar 19 PHP
PHP实现全角字符转为半角方法汇总
Jul 09 PHP
php随机显示指定文件夹下图片的方法
Jul 13 PHP
使用纯php代码实现页面伪静态的方法
Jul 25 PHP
php+mysql+ajax实现单表多字段多关键词查询的方法
Apr 15 PHP
简单实用的PHP文本缓存类实例
Mar 22 PHP
laravel 数据迁移与 Eloquent ORM的实现方法
Apr 12 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
深入理解PHP原理之错误抑制与内嵌HTML分析
2011/05/02 PHP
PHP函数eval()介绍和使用示例
2014/08/20 PHP
smarty中js的调用方法示例
2014/10/27 PHP
PHP实现登录注册之BootStrap表单功能
2017/09/03 PHP
JQuery 插件制作实践 xMarquee插件V1.0
2010/04/02 Javascript
jquery下动态显示jqGrid以及jqGrid的属性设置容易出现问题的解决方法
2010/10/22 Javascript
Javascript中匿名函数的多种调用方式总结
2013/12/06 Javascript
js 事件截取enter按键页面提交事件示例代码
2014/03/04 Javascript
在JavaScript中重写jQuery对象的方法实例教程
2014/08/25 Javascript
javascript实现表格排序 编辑 拖拽 缩放
2015/01/02 Javascript
JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题如何解决
2016/11/11 Javascript
Bootstrap popover用法详解
2016/12/22 Javascript
AngularJS使用Filter自定义过滤器控制ng-repeat去除重复功能示例
2018/04/21 Javascript
vue源码学习之Object.defineProperty 对数组监听
2018/05/30 Javascript
Angular5中提取公共组件之radio list的实例代码
2018/07/10 Javascript
微信小程序接入vant Weapp组件的详细步骤
2020/10/28 Javascript
[03:36]2015国际邀请赛第二日现场精彩集锦
2015/08/06 DOTA
python使用socket远程连接错误处理方法
2015/04/29 Python
Python中的条件判断语句与循环语句用法小结
2016/03/21 Python
Python + selenium自动化环境搭建的完整步骤
2018/05/19 Python
详解Python并发编程之创建多线程的几种方法
2019/08/23 Python
基于Html5 canvas实现裁剪图片和马赛克功能及又拍云上传图片 功能
2019/07/09 HTML / CSS
德国网上超市:myTime.de
2019/08/26 全球购物
美国牙科折扣计划:DentalPlans.com
2019/08/26 全球购物
罗技英国官方网站:Logitech UK
2020/11/03 全球购物
会计专业自我鉴定范文
2013/10/06 职场文书
出纳员岗位职责
2014/03/13 职场文书
中国好声音广告词
2014/03/18 职场文书
银行行长竞聘演讲稿
2014/04/23 职场文书
党的群众路线教育实践活动个人承诺书
2014/05/22 职场文书
任命书模板
2014/06/04 职场文书
党员四风问题对照检查材料
2014/09/27 职场文书
调解书格式范本
2015/05/20 职场文书
小平小道观后感
2015/06/09 职场文书
你离财务总监还有多远?速览CFO的岗位职责
2019/11/18 职场文书
教你漂亮打印Pandas DataFrames和Series
2021/05/29 Python