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模拟SQL Server的两个日期处理函数
Oct 09 PHP
注册页面之前先验证用户名是否存在的php代码
Jul 14 PHP
整理的一些实用WordPress后台MySQL操作命令
Jan 07 PHP
php xml常用函数的集合(比较详细)
Jun 06 PHP
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
Jun 29 PHP
PHP strip_tags()去除HTML、XML以及PHP的标签介绍
Feb 18 PHP
PHP根据两点间的经纬度计算距离
Oct 31 PHP
php提示Failed to write session data错误的解决方法
Dec 17 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
Mar 21 PHP
php 判断字符串编码是utf-8 或gb2312实例
Nov 01 PHP
php简单生成一组与多组随机字符串的方法
May 09 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
Jun 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
jquery 页面全选框实践代码
2010/04/02 Javascript
Json对象替换字符串占位符实现代码
2010/11/17 Javascript
网站404页面3秒后跳到首页的实例代码
2013/08/16 Javascript
javascript firefox 自动加载iframe 自动调整高宽示例
2013/08/27 Javascript
jquery.idTabs 选项卡使用示例代码
2014/09/03 Javascript
如何用JavaScript定义一个类
2014/09/12 Javascript
Lab.js初次使用笔记
2015/02/28 Javascript
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
2016/12/14 Javascript
js实现网页定位导航功能
2017/03/07 Javascript
js canvas实现放大镜查看图片功能
2017/06/08 Javascript
JavaScript实现区块链
2018/03/14 Javascript
Promise.all中对于reject的处理方法
2018/08/01 Javascript
vue 解决文本框被键盘遮住的问题
2019/11/06 Javascript
Vue3不支持Filters过滤器的问题
2020/09/24 Javascript
python中的对象拷贝示例 python引用传递
2014/01/23 Python
使用 Python 获取 Linux 系统信息的代码
2014/07/13 Python
Python Web框架Flask信号机制(signals)介绍
2015/01/01 Python
Python基于checksum计算文件是否相同的方法
2015/07/09 Python
python实现计算倒数的方法
2015/07/11 Python
python3 拼接字符串的7种方法
2018/09/12 Python
详解安装mitmproxy以及遇到的坑和简单用法
2019/01/21 Python
Django 通过JS实现ajax过程详解
2019/07/30 Python
python是怎么被发明的
2020/06/15 Python
matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
2021/01/05 Python
美国咖啡批发网站:Coffee.org
2017/06/29 全球购物
品恩科技软件测试面试题
2014/10/26 面试题
个人评价范文分享
2014/01/11 职场文书
自行车租赁公司创业计划书
2014/01/28 职场文书
《维生素c的故事》教学反思
2014/02/18 职场文书
项目负责人任命书
2014/06/04 职场文书
节约用水的口号
2014/06/20 职场文书
商务经理岗位职责
2014/07/30 职场文书
委托证明书
2014/09/17 职场文书
乡镇安全生产月活动总结
2015/05/08 职场文书
日本读研:怎样写好一篇日本研究计划书?
2019/07/15 职场文书
Nginx的反向代理实例详解
2021/03/31 Servers