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公用函数列表[正则]
Feb 22 PHP
PHP JSON 数据解析代码
May 26 PHP
php在文件指定行中写入代码的方法
May 23 PHP
解析PHP中ob_start()函数的用法
Jun 24 PHP
PHP提交表单失败后如何保留已经填写的信息
Jun 20 PHP
ThinkPHP中自定义目录结构的设置方法
Aug 15 PHP
Java和PHP在Web开发方面对比分析
Mar 01 PHP
ThinkPHP、ZF2、Yaf、Laravel框架路由大比拼
Mar 25 PHP
PHP 数组基本操作小结(推荐)
Jun 13 PHP
php获取微信共享收货地址的方法
Dec 21 PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
Jun 14 PHP
php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
Jun 06 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设计模式 php实现合成模式(composite)
2015/12/08 PHP
PHP处理Ajax请求与Ajax跨域问题
2017/02/13 PHP
javascript下给元素添加事件的方法与代码
2007/08/13 Javascript
JavaScript中的对象化编程
2008/01/16 Javascript
jquery的extend和fn.extend的使用说明
2011/01/09 Javascript
js正文内容高亮效果的实现方法
2013/06/30 Javascript
js中top的作用深入剖析
2014/03/04 Javascript
javascript实现在网页任意处点左键弹出隐藏菜单的方法
2015/05/13 Javascript
JavaScript面对国际化编程时的一些建议
2015/06/24 Javascript
jquery自适应布局的简单实例
2016/05/28 Javascript
微信小程序 网络API 上传、下载详解
2016/11/09 Javascript
jQuery实现返回顶部按钮和scroll滚动功能[带动画效果]
2017/07/05 jQuery
详解vue-cli 3.0 build包太大导致首屏过长的解决方案
2018/11/10 Javascript
vue2之简易的pc端短信验证码的问题及处理方法
2019/06/03 Javascript
微信小程序8种数据通信的方式小结
2020/02/03 Javascript
js、jquery实现列表模糊搜索功能过程解析
2020/03/27 jQuery
Python实现备份文件实例
2014/09/16 Python
Python实现去除代码前行号的方法
2015/03/10 Python
九步学会Python装饰器
2015/05/09 Python
详解Python文本操作相关模块
2017/06/22 Python
利用Python如何批量更新服务器文件
2018/07/29 Python
Python对称的二叉树多种思路实现方法
2020/02/28 Python
Python实现手绘图效果实例分享
2020/07/22 Python
Python结合Window计划任务监测邮件的示例代码
2020/08/05 Python
CSS3中媒体查询结合rem布局适配手机屏幕
2019/06/10 HTML / CSS
HTML5边玩边学(2)基础绘图实现方法
2010/09/21 HTML / CSS
Python使用openpyxl复制整张sheet
2021/03/24 Python
银行柜员应聘推荐信范文
2013/11/24 职场文书
四川成都导游欢迎词
2014/01/18 职场文书
《雷鸣电闪波尔卡》教学反思
2014/02/23 职场文书
暑期培训随笔感言
2014/03/10 职场文书
美容院经理岗位职责
2014/04/03 职场文书
青年安全生产示范岗事迹材料
2014/05/04 职场文书
挂职学习心得体会
2014/09/09 职场文书
酒店餐厅2014重阳节活动策划方案
2014/09/16 职场文书
2016年员工政治思想表现评语
2015/12/02 职场文书