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 cookie的操作实现代码(登录)
Dec 29 PHP
PHP+Mysql+jQuery实现发布微博程序 jQuery篇
Oct 08 PHP
基于php在各种web服务器的运行模式详解
Jun 03 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(八)
Jun 23 PHP
php设计模式之简单工厂模式详解
Sep 04 PHP
Smarty使用自定义资源的方法
Aug 08 PHP
PHP在线调试执行的实现方法(附demo源码)
Apr 28 PHP
PHP多进程编程总结(推荐)
Jul 18 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
May 03 PHP
PHP用函数嵌入网站访问量计数器
Oct 27 PHP
掌握PHP垃圾回收机制详解
Mar 13 PHP
php实现快速对二维数组某一列进行组装的方法小结
Dec 04 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
YII使用url组件美化管理的方法
2015/12/28 PHP
PHP执行shell脚本运行程序不产生core文件的方法
2016/12/28 PHP
深入解析PHP中SESSION反序列化机制
2017/03/01 PHP
不错的新闻标题颜色效果
2006/12/10 Javascript
css图片自适应大小
2007/11/28 Javascript
Jquery动态更改一张位图的src与Attr的使用
2013/07/31 Javascript
JavaScript中instanceof与typeof运算符的用法及区别详细解析
2013/11/19 Javascript
js判断iframe内的网页是否滚动到底部触发事件
2014/03/18 Javascript
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
简单对比分析JavaScript中的apply,call与this的使用
2015/12/04 Javascript
js验证真实姓名与身份证号,手机号的简单实例
2016/07/18 Javascript
JS实现本地存储信息的方法(基于localStorage与userData)
2017/02/18 Javascript
vue-router路由简单案例介绍
2017/02/21 Javascript
JavaScript Uploadify文件上传实例
2017/02/28 Javascript
js利用for in循环获取 一个对象的所有属性以及值的实例
2017/03/30 Javascript
详解nvm管理多版本node踩坑
2019/07/26 Javascript
Vuex中实现数据状态查询与更改
2019/11/08 Javascript
js实现图片上传到服务器和回显
2020/01/19 Javascript
JavaScript实现音乐导航效果
2020/11/19 Javascript
Python使用Socket(Https)Post登录百度的实现代码
2012/05/18 Python
python使用PythonMagick将jpg图片转换成ico图片的方法
2015/03/26 Python
python字典get()方法用法分析
2015/04/17 Python
Python+Wordpress制作小说站
2017/04/14 Python
Python 中pandas.read_excel详细介绍
2017/06/23 Python
python使用pyqt写带界面工具的示例代码
2017/10/23 Python
可能是最全面的 Python 字符串拼接总结【收藏】
2018/07/09 Python
PyTorch 1.0 正式版已经发布了
2018/12/13 Python
python如何发送带有附件、正文为HTML的邮件
2021/02/27 Python
俄罗斯品牌服装和鞋子的在线商店:KUPIVIP
2019/10/27 全球购物
业务员岗位职责范本
2013/12/15 职场文书
《中国的气候》教学反思
2014/02/23 职场文书
项目合作协议书
2014/09/23 职场文书
公司领导班子民主生活会对照检查材料
2014/10/02 职场文书
2014年林业工作总结
2014/12/05 职场文书
资产移交协议书
2016/03/24 职场文书
详解非极大值抑制算法之Python实现
2021/06/28 Python