`

php soap client 链接问题

    博客分类:
  • php
阅读更多
1.说明
  php 调用jira的soap接口代码:
 
   <?php 
    $server_url = "http://******.44/s3c/samples/";
    $cur_url = "http://******.14/s3c/";

    // Jira WSDL
    $wsdl =  "http://******.14:8080/rpc/soap/jirasoapservice-v2?wsdl";
    $login = "******";
    $password = "******";
    try{
        $client = new soapclient($wsdl);
        $login = $client->login( $login,$password);
        $data = $_POST;
//        $userName = $_POST["sample_man"];
        $userName = 'xiaye';
        $sss = '';
        $count = 0;
        foreach($data as $key=>$value){
            if(strpos($key, 'items_')!==0){
                continue;
            }
            if($count == 0){
                $sss = str_replace('items_','',$key);
            }else{
                $sss .= '_'.str_replace('items_','',$key);
            }
            $count++;
        }
        
        $jsonurl = $server_url."issues_info.json?ids=".$sss;
        $json = file_get_contents($jsonurl,0,null,null);
        $json = json_decode($json, true);
        foreach($json as $s){
            $sample = $s['sample'];

            //样本文件
            $sampleFiles = $s['sampleFiles'];
            
            foreach($sampleFiles as $f){
                echo $f['SampleFile']['id'];
            }
            create_issue($client, $login, $userName, $sample, $sampleFiles, $server_url);
        }

        // Log out
        $logout = $client->logout($login);
        if($logout ==  TRUE){
        }else{
        }

        /* Redirect browser */
        header("Location: ".$cur_url);
        /* Make sure that code below does not get executed when we redirect. */
        exit;


        
    } catch (Exception $e) {
        print $e->getMessage();
        exit();
    }

    /**
     * 创建工单
     */
    function create_issue($client, $login, $userName, $sample, $sampleFiles, $server_url){
        try{
            //echo "TEST1!";
            //project key
            $project = "CHECKING";
            //issue type
            $type = 6;
            $date = date('Ymd');
            $detailUrl = "http://******.44/s3c/samples/view/";
            
            $filenames = ''; 
            foreach ( $sampleFiles as $sampleFile ) {
                $filenames .= $sampleFile['SampleFile']['ins_path']."\n ";
            }
                    
            
            $sampleName = date('Y-m-d',$sample['Sample']['report_at']/1000)."_".$sample['Sample']['id'].".sis";
            //a)    样本名称
            //b)    软件名称
            //c)    软件UID
            //d)    软件的证书颁发者
            //e)    软件的证书使用者
            //f)    样本中各个文件的安装路径
            //g)    样本详情链接
            $desc = "软件名称:".$sample['Sample']['name']."\n 软件UID:".$sample['Sample']['uid']."\n 软件的证书颁发者:".
                    $sample['Sample']['ca_issuer']."\n 软件的证书使用者:".$sample['Sample']['ca_subject'].
                    "\n样本中各个文件的安装路径:\n".$filenames."\n 样本详情链接:".
                    $detailUrl.$sample['Sample']['id'];
            $remoteIssue = array(array ("customfieldId"=>"customfield_10050", "values"=>array ($sampleName)),
                                array ("customfieldId"=>"customfield_10123", "values"=>array ($desc)),
                                array ("customfieldId"=>"customfield_10167", "values"=>array ("手机医生")));
            
            $issue = array(
                "project" => $project,
                "type" =>$type,
                "summary" => $date."_".date('Y-m-d',$sample['Sample']['report_at']/1000)."_".$sample['Sample']['id'].".sis",
                "assignee"=>$userName,
                "reporter"=>$login,
                "customFieldValues" => $remoteIssue
               );
                

            //  Create the Issue
            $result = $client->createIssue( $login,$issue);
            
            // Add attachment
            $attachment_file = $sample['Sample']['sis_path'];
            $jsonurl = $server_url."file_content.json?path=".$attachment_file;
            $json = file_get_contents($jsonurl,0,null,null);
            $attachmentName = basename($attachment_file);
            $result = $client->addBase64EncodedAttachmentsToIssue($login, $result->key, array($attachmentName), array(base64_encode($json)) );
            
            // Change status
            $jsonurl = $server_url."change_status.json?id=".$sample['Sample']['id'];
            $result = file_get_contents($jsonurl,0,null,null);
            //print_r($result);
        } catch (Exception $e) {
            print $e->getMessage();
            exit();
        }
    }
    
?>


2.出现错误
SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://******.14:8080/rpc/soap/jirasoapservice-v2?wsdl' : failed to load external entity "http://******.14:8080/rpc/soap/jirasoapservice-v2?wsdl"

wsdl error: Getting http://******.14:8080/rpc/soap/jirasoapservice-v2?wsdl - HTTP ERROR: Couldn't open socket connection to server http://******.14:8080/rpc/soap/jirasoapservice-v2?wsdl, Error (13): Permission denied

3.解决问题
  出现此错误时,是因为httpd_can_network_connect 没有开通,通过命令打开即可。
  setsebool -P httpd_can_network_connect on

  备注:查看httpd的状态命令:/usr/sbin/getsebool -a | grep httpd
   
   allow_httpd_anon_write --> off
   allow_httpd_bugzilla_script_anon_write --> off
   allow_httpd_mod_auth_pam --> off
   allow_httpd_nagios_script_anon_write --> off
   allow_httpd_squid_script_anon_write --> off
   allow_httpd_sys_script_anon_write --> off
   httpd_builtin_scripting --> on
   httpd_can_network_connect --> off
   httpd_can_network_connect_db --> off
   httpd_can_network_relay --> off
   httpd_disable_trans --> off
   httpd_enable_cgi --> on
   httpd_enable_ftp_server --> off
   httpd_enable_homedirs --> on
   httpd_rotatelogs_disable_trans --> off
   httpd_ssi_exec --> off
   httpd_suexec_disable_trans --> off
   httpd_tty_comm --> on
   httpd_unified --> on        


4.相关链接
  http://www.linuxforums.org/forum/redhat-fedora-linux-help/46840-fsockopen-error-13-permission-denied.html(提到httpd错误)
  http://wiki.centos.org/zh/TipsAndTricks/SelinuxBooleans
  http://fedoraproject.org/wiki/SELinux/apache
  http://oss.tresys.com/docs/refpolicy/api/tunables.html
分享到:
评论

相关推荐

    yii2-soap-client:Yii 2 的 SOAP 客户端扩展

    Yii 2 的 SOAP 客户端扩展...用法您需要设置soap客户端应用程序组件: 'components' =&gt; [ 'siteApi' =&gt; [ 'class' =&gt; 'mongosoft\soapclient\Client' , 'url' =&gt; 'http://myservice.com/api/hello' , 'options' =&gt; [ '

    SAP-soapclient:使用 PHP SoapClient 类连接到 SAP 服务器

    要开始使用PHP SoapClient连接到SAP,你需要以下步骤: 1. **配置连接参数**:设置服务器URL、用户名、密码等认证信息。例如: ```php $soapUrl = 'http://sap-server:8000/sap/bc/soap/sap/zmy_webservice?wsdl'...

    php soap操作实例

    在PHP中,我们可以使用SoapClient类来创建SOAP客户端。这个类允许我们连接到SOAP服务器并调用其提供的方法。例如,假设有一个名为`MyService`的SOAP服务,提供了一个`calculate`方法,我们可以通过以下方式调用: `...

    PHP SOAP解决Could not connect to host

    PHP webservice SOAP解决Could not connect to host

    php+soap通信

    - 使用SoapClient类:PHP内置了SoapClient类,可以直接创建一个实例来连接到SOAP服务,并调用其方法。例如: ```php $client = new SoapClient("http://example.com/service?wsdl"); $response = $client-&gt;...

    PHP 中应用 SOAP例子

    1. **SoapClient**: 用于连接到SOAP Web服务,执行方法调用并处理响应。它接受WSDL文档作为参数,自动处理请求和响应的XML编码。 2. **SoapServer**: 用于创建SOAP服务器,处理来自客户端的请求,并返回响应。你...

    PHP webservice教程,soap wsdl密码验证,webservice高级应用

    在PHP中,我们可以使用SoapClient和SoapServer类来处理SOAP请求和响应。例如,使用SoapClient与远程Web服务进行交互,而SoapServer则用于创建和运行本地的SOAP服务。 WSDL则是用来描述Web服务的接口,它定义了服务...

    THINKPHP3.2使用soap连接webservice的解决方法

    2.在方法中创建的 SoapClient 类 的实例 $url=https://www.test.com/adwebservice.asmx?wsdl; $client = new \SoapClient($url); 3.然后调用webservice 接口方法 //获取webservice 接口方法 $client-&gt;__get...

    PHP SOAP终于测验成功[ZT]

    在PHP中,我们使用`SoapClient`类来创建SOAP客户端,它会根据指定的WSDL文件连接到SOAP服务,并调用其提供的方法。通过`__soapCall`方法,我们可以传递参数并获取服务返回的结果。在测试过程中,确保正确配置URL、...

    PHP SOAP服务端客户端实例

    $client = new SoapClient('http://yourdomain.com/server.php?wsdl', array('trace' =&gt; 1)); ``` 这里的URL是服务端的地址,通常带有`?wsdl`参数,这表示客户端正在请求WSDL(Web Services Description Language)...

    PHP使用SOAP调用API操作示例

    3. 使用SoapClient类创建SOAP客户端:在PHP中,通过实例化SoapClient类并传入WSDL文件的位置来创建一个SOAP客户端。WSDL文件定义了SOAP服务的地址、通信协议、调用方式等信息。 4. 调用Web服务的方法:通过Soap...

    soap-client:Inteleon肥皂客户端

    使用更多选项扩展本机 PHP Soap 客户端。 该类使用 cURL 发出请求。 安装 运行: composer require inteleon/soap-client 如何使用 用法与原生相同。 选项 超时(毫秒) $ client -&gt; setTimeout ( 30000 ); //The ...

    Google API SOAP

    3. **在`search.php`中设置SOAP客户端**:在`search.php`文件中,使用PHP的内置`SoapClient`类建立与Google API的连接。这需要提供API的WSDL(Web Services Description Language)地址,以及之前获取的API密钥或...

    qiwi-php-soap.zip_qiwi php

    在实际开发过程中,开发者需要对SOAP协议有基本的理解,熟悉PHP的SOAP客户端库(如SoapClient)以及如何处理XML数据。同时,还需要了解QIWI的API文档,以确保正确地调用其提供的各种支付和交易服务。

    Webservice Client and Server demo in PHP

    4. **Client_Yahoo.php, Client_Amazon.php, Client_Sabre.php, Client_Soap.php, Client_Math.php** - 这些文件代表不同的Web服务客户端,分别对应Yahoo API、Amazon API、Sabre API、SOAP服务以及一个用于数学计算...

    PHP HTTP客户端(GET POST SOAP SOCKET)

    在PHP中,可以使用SoapClient类来调用SOAP服务。以下是一个简单的示例: ```php $client = new SoapClient('http://example.com/soap/service?wsdl'); $result = $client-&gt;__soapCall('functionName', array('param...

    php WebService用法实例

    这意味着在实际使用`SoapClient`时,需要确保提供正确的WSDL URL,否则客户端将无法正确连接到服务。 综上所述,PHP中的Web Service技术主要依赖于`SoapServer`和`SoapClient`类,它们提供了创建和消费SOAP服务的...

    PHP自动生成WSDL的Class

    `Client.php`文件则可能包含了一个简单的PHP客户端示例,使用`SoapClient`类连接到服务,并调用其方法。这通常涉及设置SOAP服务器的URL、指定WSDL位置以及传递必要的参数。 最后,`Service.php`可能会初始化并运行...

    php实现通过soap调用.Net的WebService asmx文件

    在上面的代码中,`SoapClient`类被用来创建一个到Web服务的客户端连接,`__soapCall`方法用于调用服务中的具体方法。注意,`ChkWele`是.NET WebService中的方法名,而`ChkWeleResult`是PHP调用后的返回结果对应的...

Global site tag (gtag.js) - Google Analytics