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 Zip压缩 在线对文件进行压缩的函数
May 26 PHP
php 变量未定义等错误的解决方法
Jan 12 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
Jan 30 PHP
php 生成自动创建文件夹并上传文件的示例代码
Mar 07 PHP
ThinkPHP之getField详解
Jun 20 PHP
Yii框架中 find findAll 查找出制定的字段的方法对比
Sep 10 PHP
php中base64_decode与base64_encode加密解密函数实例
Nov 24 PHP
PHP经典面试题之设计模式(经常遇到)
Oct 15 PHP
PHP中Restful api 错误提示返回值实现思路
Apr 12 PHP
PHP基于phpqrcode类生成二维码的方法详解
Mar 14 PHP
PHP实现 APP端微信支付功能
Jun 22 PHP
对laravel in 查询的使用方法详解
Oct 09 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
记录mysql性能查询过程的使用方法
2013/05/02 PHP
php实现俄罗斯乘法实例
2015/03/07 PHP
基于Swoole实现PHP与websocket聊天室
2016/08/03 PHP
PHP回调函数简单用法示例
2019/05/08 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
DEFER怎么用?
2006/07/01 Javascript
JavaScript 学习笔记(十一)
2010/01/19 Javascript
加载jQuery后$冲突的解决办法
2010/07/09 Javascript
另一个javascript小测验(代码集合)
2011/07/27 Javascript
用jquery实现输入框获取焦点消失文字
2013/04/27 Javascript
js算法中的排序、数组去重详细概述
2013/10/14 Javascript
JS实现模拟风力的雪花飘落效果
2015/05/13 Javascript
JavaScript设置表单上传时文件个数的方法
2015/08/11 Javascript
使用CamanJS在Web页面上处理图像的技巧
2015/08/18 Javascript
JS操作XML实例总结(加载与解析XML文件、字符串)
2015/12/08 Javascript
Javascript使用uploadify来实现多文件上传
2016/11/16 Javascript
js验证手机号、密码、短信验证码代码工具类
2020/06/24 Javascript
js获取元素下的第一级子元素的方法(推荐)
2017/03/05 Javascript
使用travis-ci如何持续部署node.js应用详解
2017/07/30 Javascript
使用vs code开发Nodejs程序的使用方法
2017/09/21 NodeJs
完美解决mui框架off-canvas侧滑超出部分隐藏无法滚动的问题
2018/01/25 Javascript
Vue 动态设置路由参数的案例分析
2018/04/24 Javascript
Ant Design Vue 添加区分中英文的长度校验功能
2020/01/21 Javascript
vue实现在线学生录入系统
2020/05/30 Javascript
深入了解Vue动态组件和异步组件
2021/01/26 Vue.js
使用pip发布Python程序的方法步骤
2018/10/11 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
python 实现批量替换文本中的某部分内容
2019/12/13 Python
pytorch GAN生成对抗网络实例
2020/01/10 Python
Python基于Socket实现简单聊天室
2020/02/17 Python
用python对excel查重
2020/12/07 Python
python爬虫爬取图片的简单代码
2021/01/18 Python
跟单文员的岗位职责
2013/11/14 职场文书
失业者真诚求职信范文
2013/12/25 职场文书
公安机关起诉意见书
2015/05/20 职场文书
baselines示例程序train_cartpole.py的ImportError
2022/05/20 Python