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 相关文章推荐
基于mysql的论坛(3)
Oct 09 PHP
将RTF格式的文件转成HTML并在网页中显示的代码
Oct 09 PHP
经典的PHPer为什么被认为是草根?
Apr 02 PHP
php下删除字符串中HTML标签的函数
Aug 27 PHP
php中将字符串转为HTML的实体引用的一个类
Feb 03 PHP
关于php循环跳出的问题
Jul 01 PHP
本地计算机无法启动Apache故障处理
Aug 08 PHP
WordPress自定义时间显示格式
Mar 27 PHP
php实现的验证码文件类实例
Jun 18 PHP
PHP添加图片水印、压缩、剪切的封装类
Aug 17 PHP
PHP 7安装调试工具Xdebug扩展的方法教程
Jun 17 PHP
PHP常用操作类之通信数据封装类的实现
Jul 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
如何用php生成扭曲及旋转的验证码图片
2013/06/07 PHP
php源码分析之DZX1.5随机数函数random用法
2015/06/17 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
2017/05/23 PHP
dotopAlert 提示用户需安装播放器的代码
2012/09/17 Javascript
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
2013/05/07 Javascript
JavaScript模块随意拖动示例代码
2014/05/27 Javascript
JS动态修改iframe高度和宽度的方法
2015/04/01 Javascript
JS跨域交互(jQuery+php)之jsonp使用心得
2016/07/01 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
2016/07/11 Javascript
jQuery新窗口打开外链接
2016/07/21 Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
2016/12/27 Javascript
JavaScript获取select中text值的方法
2017/02/13 Javascript
Vue.js 2.0中select级联下拉框实例
2017/03/06 Javascript
bootstrap响应式表格实例详解
2017/05/15 Javascript
纯JS实现只能输入数字的简单代码
2017/06/21 Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
2020/03/28 Javascript
Angular路由ui-router配置详解
2018/08/01 Javascript
layer.close()关闭进度条和Iframe窗的方法
2018/08/17 Javascript
使用Angular 6创建各种动画效果的方法
2018/10/10 Javascript
python基础教程之获取本机ip数据包示例
2014/02/10 Python
简单介绍Python的Django框架的dj-scaffold项目
2015/05/30 Python
Python写的一个简单监控系统
2015/06/19 Python
ActiveMQ:使用Python访问ActiveMQ的方法
2019/01/30 Python
python 在某.py文件中调用其他.py内的函数的方法
2019/06/25 Python
Python处理时间日期坐标轴过程详解
2019/06/25 Python
Django框架请求生命周期实现原理
2020/11/13 Python
pycharm Tab键设置成4个空格的操作
2021/02/26 Python
使用html5+css3来实现slider切换效果告别javascript+css
2013/01/08 HTML / CSS
致跳高运动员广播稿
2014/01/13 职场文书
旅游网创业计划书
2014/01/31 职场文书
《逃家小兔》教学反思
2014/02/23 职场文书
2015年销售人员工作总结
2015/04/07 职场文书
英语读书笔记
2015/07/02 职场文书
事业单位工作人员2015年度思想工作总结
2015/10/15 职场文书
小学中队委竞选稿
2015/11/20 职场文书
动画电影《擅长捉弄人的高木同学》6月10日上映!
2022/03/20 日漫