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 相关文章推荐
模板引擎Smarty深入浅出介绍
Dec 06 PHP
MySQL授权问题总结
May 06 PHP
php判断字符以及字符串的包含方法属性
Aug 30 PHP
php 获取mysql数据库信息代码
Mar 12 PHP
PHP手机号码归属地查询代码(API接口/mysql)
Sep 04 PHP
PHP登陆后跳转到登陆前页面实现思路及代码
Jan 17 PHP
PHP将session信息存储到数据库的类实例
Mar 04 PHP
PHP生成随机字符串(3种方法)
Sep 25 PHP
Codeigniter中集成smarty和adodb的方法
Mar 04 PHP
PHP sleep()函数, usleep()函数
Aug 25 PHP
PHP实现从上往下打印二叉树的方法
Jan 18 PHP
php连接MSsql server的五种方法总结
Mar 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
php中文件上传的安全问题
2006/10/09 PHP
简单易用的计数器(数据库)
2006/10/09 PHP
PHP学习笔记之字符串编码的转换和判断
2014/05/22 PHP
PHP提示Cannot modify header information - headers already sent by解决方法
2014/09/22 PHP
php获取今日开始时间和结束时间的方法
2017/02/27 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
JavaScript 面向对象编程(1) 基础
2010/05/18 Javascript
让人印象深刻的10个jQuery手风琴效果应用
2012/05/08 Javascript
javascript页面动态显示时间变化示例代码
2013/12/18 Javascript
jQuery中(function($){})(jQuery)详解
2015/07/15 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
2016/11/07 Javascript
JS一个简单的注册页面实例
2017/09/05 Javascript
在 Angular中 使用 Lodash 的方法
2018/02/11 Javascript
angularjs 动态从后台获取下拉框的值方法
2018/08/13 Javascript
微信小程序判断页面是否从其他页面返回的实例代码
2019/07/03 Javascript
vue日历/日程提醒/html5本地缓存功能
2019/09/02 Javascript
JavaScript点击按钮生成4位随机验证码
2021/01/28 Javascript
python基础教程之实现石头剪刀布游戏示例
2014/02/11 Python
Python列表切片用法示例
2017/04/19 Python
Python在图片中添加文字的两种方法
2017/04/29 Python
python3 shelve模块的详解
2017/07/08 Python
Python切片操作实例分析
2018/03/16 Python
在pycharm 中添加运行参数的操作方法
2019/01/19 Python
Python中pymysql 模块的使用详解
2019/08/12 Python
从多个tfrecord文件中无限读取文件的例子
2020/02/17 Python
VScode连接远程服务器上的jupyter notebook的实现
2020/04/23 Python
使用opencv中匹配点对的坐标提取方式
2020/06/04 Python
详解Anaconda安装tensorflow报错问题解决方法
2020/11/01 Python
python线程优先级队列知识点总结
2021/02/28 Python
Html5实现移动端、PC端 刮刮卡效果
2016/06/30 HTML / CSS
物理力学求职信
2014/02/18 职场文书
家长对老师的感言
2014/03/11 职场文书
军训拉歌口号
2014/06/13 职场文书
环保主题班会教案
2015/08/13 职场文书
pytorch fine-tune 预训练的模型操作
2021/06/03 Python
js前端面试常见浏览器缓存强缓存及协商缓存实例
2022/06/21 Javascript