当前位置: 首页 > 编程笔记 >

PHP使用SOAP调用API操作示例

王景山
2023-03-14
本文向大家介绍PHP使用SOAP调用API操作示例,包括了PHP使用SOAP调用API操作示例的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了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_timeout和proxy_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数据结构与算法教程》、《php程序设计算法总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

 类似资料:
  • 我正在部署一个项目Spring Boot,使用devtools(spring-boot-devtools)并调用一个Soap服务。我将Soap类生成到/src/main/resources/templates/generated中,并将该文件夹作为源代码添加。因为当调用这个Soap服务时,它有一个问题: java.lang.IllegalArgumentException:...从方法引用的Cla

  • 下面是我正在使用的代码:

  • 此文档提供复合型ui接口,仅对web端生效 设置主题颜色 xn("setCallback", [ { type: "loadUIScript", func: function() { // 修改聊窗色调 // 第一个参数:固定值字符串 rgb // 后面三个参数:想要设置的主色调的 rg

  • 我需要在RESTFul API中公开我的业务逻辑。我的一位同事提到Dropwizard似乎很好。但是我想知道它是否适合我的要求。我的要求是调用多个SOAP服务和REST API来构建应用程序逻辑。 dropwizard对消费soap服务/rest API有什么原生支持吗?或者我应该和Spring,CXF之类的其他框架集成?如果我使用CXF或Spring,我知道我将需要生成JAXB注释类、服务end

  • 我以https://stackoverflow.com/a/3180885/242042中的示例为例,只是根据我的需要对其进行了调整。 这是我的豆子: 和我的JSF文件 所以它是相当相似的,但我不明白的是为什么它不想在“编辑”上调用操作。(即我在SystemOut.log上看不到任何内容) 我正在查看答案https://stackoverflow.com/A/13327382/242042,看看是

  • 本文向大家介绍php 使用expat方式解析xml文件操作示例,包括了php 使用expat方式解析xml文件操作示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php 使用expat方式解析xml文件操作。分享给大家供大家参考,具体如下: test.xml: PHP文件: 运行结果: -- Note -- To: George From: John Heading: Reminder