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日历[测试通过]
Mar 27 PHP
PHP操作数组相关函数
Feb 03 PHP
php数组的一些常见操作汇总
Jul 17 PHP
Thinkphp模板中截取字符串函数简介
Jun 17 PHP
php实现与erlang的二进制通讯实例解析
Jul 23 PHP
php获取文章上一页与下一页的方法
Dec 01 PHP
PHP页面转UTF-8中文编码乱码的解决办法
Oct 20 PHP
php 时间time与日期date之间的使用详解及区别
Nov 07 PHP
thinkPHP中volist标签用法示例
Dec 06 PHP
PHP 7.4中使用预加载的方法详解
Jul 08 PHP
Yii2.0框架模型多表关联查询示例
Jul 18 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
Sep 30 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注入点构造代码
2008/06/14 PHP
php 字符过滤类,用于过滤各类用户输入的数据
2009/05/27 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
2015/12/18 PHP
php仿微信红包分配算法的实现方法
2016/05/13 PHP
PHP实现压缩图片尺寸并转为jpg格式的方法示例
2018/05/10 PHP
Javascript图像处理—虚拟边缘介绍及使用方法
2012/12/27 Javascript
jquery带下拉菜单和焦点图代码分享
2015/08/24 Javascript
jquery实现标题字体变换的滑动门菜单效果
2015/09/07 Javascript
JS+CSS实现鼠标滑过时动态翻滚的导航条效果
2015/09/24 Javascript
使用JQuery实现Ctrl+Enter提交表单的方法
2015/10/22 Javascript
jQuery CSS3相结合实现时钟插件
2016/01/08 Javascript
jQuery前端开发35个小技巧
2016/05/24 Javascript
js原生跨域_用script标签的简单实现
2016/09/24 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
2017/04/19 Javascript
phantomjs导出html到pdf的方法总结
2017/10/19 Javascript
jQuery 实现左右两侧菜单添加、移除功能
2018/01/02 jQuery
巧妙运用v-model实现父子组件传值的方法示例
2019/04/07 Javascript
Layui点击图片弹框预览的实现方法
2019/09/16 Javascript
[48:31]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第二场 12.17
2020/12/19 DOTA
跟老齐学Python之集成开发环境(IDE)
2014/09/12 Python
在VS Code上搭建Python开发环境的方法
2018/04/06 Python
基于python OpenCV实现动态人脸检测
2018/05/25 Python
kaggle+mnist实现手写字体识别
2018/07/26 Python
python使用mitmproxy抓取浏览器请求的方法
2019/07/02 Python
python的几种矩阵相乘的公式详解
2019/07/10 Python
python如何删除文件、目录
2020/06/23 Python
python+appium+yaml移动端自动化测试框架实现详解
2020/11/24 Python
video下autoplay属性无效的解决方法(添加muted属性)
2020/05/19 HTML / CSS
丝芙兰香港官网:Sephora香港
2018/03/13 全球购物
Ray-Ban雷朋西班牙官网:全球领先的太阳眼镜品牌
2018/11/28 全球购物
装饰活动策划方案
2014/02/11 职场文书
财政专业求职信范文
2014/02/19 职场文书
党的群众路线教育实践活动个人对照检查材料(企业)
2014/11/05 职场文书
2015年财务科工作总结范文
2015/05/13 职场文书
2016年习主席讲话学习心得体会
2016/01/20 职场文书
Python实现打乒乓小游戏
2021/09/25 Python