Web 服务 SOAP 请求适用于 SOAPUI,但不适用于 PHP [英] Web Service SOAP Request is working on SOAPUI but not working on PHP

查看:30
本文介绍了Web 服务 SOAP 请求适用于 SOAPUI,但不适用于 PHP的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经尝试了几乎所有我能找到的可能的解决方案,但我似乎无法让这个脚本工作.以下是我之前的一些尝试:

如何使用 wse-php 库通过 SOAP 连接到安全的网络服务

https://stackoverflow.com/问题/18952222/soap-error-encoding-object-has-no-createlead-property-php

如何解决错误:SOAP-ERROR:编码:对象没有createLead"属性?

如何通过 SOAP [PHP] 使用具有 WS-Security 的安全 Web 服务?

这是我最近的尝试:

<soapenv:Header><wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><wsse:用户名令牌><wsse:用户名>derek</wsse:用户名><wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">Momentum1</wsse:Password></wsse:UsernameToken></wsse:安全></soapenv:Header><soapenv:Body><v1:CreateLeadRequest><createLead><v11:LeadSourceId>23627e70-a29e-e211-b8a8-005056b81ebe</v11:LeadSourceId><v11:AffiliateLeadReference>852800020</v11:AffiliateLeadReference><v11:标题><v12:Code>852800018</v12:Code></v11:Title><v11:Initials>MD</v11:Initials><v11:PreferredName>Marius</v11:PreferredName><v11:FirstName>Marius</v11:FirstName><v11:LastName>Drew</v11:LastName><v11:PreferredCorrespondenceLanguage><v13:Code>852800001</v13:Code><v13:Description>?</v13:Description></v11:PreferredCorrespondenceLanguage><v11:PreferredCommunicationMethod><v14:Code>852800000</v14:Code></v11:PreferredCommunicationMethod><v11:广告系列><v15:Code>95D9042A-440E-E311-A5EB-005056B81EA5</v15:Code></v11:Campaign><v11:HomePhoneNumber>0723621762</v11:HomePhoneNumber><v11:BusinessPhoneNumber>0723621762</v11:BusinessPhoneNumber><v11:手机号码>0723621762</v11:手机号码><v11:EmailAddress>mdrew@gmail.com</v11:EmailAddress><v11:Notes>IMU</v11:Notes><v11:产品类别><v16:Code>d000083d-229c-e211-b8a8-005056b81ebe</v16:Code></v11:ProductCategories></createLead></v1:CreateLeadRequest></soapenv:Body></soapenv:Envelope>';$content = utf8_encode($xml);$content_length = strlen($xml);$headers = array('Content-Type: application/soap+xml; charset=utf-8', 'Content-Length: ' . $content_length);$ch = curl_init();curl_setopt ($ch, CURLOPT_URL, $url);curl_setopt ($ch, CURLOPT_HTTPHEADER, $headers);curl_setopt ($ch, CURLOPT_POSTFIELDS, $content);curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);$output = curl_exec($ch);curl_close($ch);打印 $output;} 捕获(异常 $e){var_dump($e);}?>

我认为我发送消息的方式有问题.问题可能出在我的 WSDL 及其位置上吗?

我已经为此工作了一个星期,但我已经很沮丧了.这个 WS-Security 的东西很痛苦.我尝试在 StackOverflow 上使用这里的建议,例如创建一个扩展到 SoapClient 但仍然不起作用的类.我希望有人可以成为天使并帮助我解决这个问题.谢谢!

哦,顺便说一下,这是 SOAPUI 上的 RAW XML 消息请求:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://www.momentum.co.za/crm/服务/应用程序/CRMLeadService/v1.0" xmlns:v11="http://www.momentum.co.za/crm/service/type/application/Lead/v1.0" xmlns:v12="http://www.momentum.co.za/crm/service/type/TitleType/v1.0" xmlns:v13="http://www.momentum.co.za/crm/service/type/LanguageType/v1.0" xmlns:v14="http://www.momentum.co.za/crm/service/type/PreferredContactMethodType/v1.0" xmlns:v15="http://www.momentum.co.za/crm/service/type/CampaignType/v1.0" xmlns:v16="http://www.momentum.co.za/crm/service/type/ProductCategoryType/v1.0"><soapenv:Header><wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><wsse:用户名令牌><wsse:用户名>817221</wsse:用户名><wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">1234</wsse:Password></wsse:UsernameToken></wsse:安全></soapenv:Header><soapenv:Body><v1:CreateLeadRequest><createLead><v11:LeadSourceId>23627e70-a29e-e211-b8a8-005056b81ebe</v11:LeadSourceId><v11:AffiliateLeadReference>852800020</v11:AffiliateLeadReference><v11:标题><v12:Code>852800018</v12:Code></v11:Title><v11:Initials>MD</v11:Initials><v11:PreferredName>Marius</v11:PreferredName><v11:FirstName>Marius</v11:FirstName><v11:LastName>Drew</v11:LastName><v11:PreferredCorrespondenceLanguage><v13:Code>852800001</v13:Code><v13:Description>?</v13:Description></v11:PreferredCorrespondenceLanguage><v11:PreferredCommunicationMethod><v14:Code>852800000</v14:Code></v11:PreferredCommunicationMethod><v11:广告系列><v15:Code>95D9042A-440E-E311-A5EB-005056B81EA5</v15:Code></v11:Campaign><v11:HomePhoneNumber>0723621762</v11:HomePhoneNumber><v11:BusinessPhoneNumber>0723621762</v11:BusinessPhoneNumber><v11:手机号码>0723621762</v11:手机号码><v11:EmailAddress>mdrew@gmail.com</v11:EmailAddress><v11:Notes>IMU</v11:Notes><v11:产品类别><v16:Code>d000083d-229c-e211-b8a8-005056b81ebe</v16:Code></v11:ProductCategories></createLead></v1:CreateLeadRequest></soapenv:Body></soapenv:信封>

这在 SOAPUI 上运行良好,但它在 PHP 上返回一个 soapenv:Client 内部错误.

这是我制作的另一个版本的脚本.尽管如此,它仍然会发出内部错误.可能是处理 Web 服务上的 WS-Security 的标头的构造存在问题.

\n");$client = new SoapClient ($wsdl, array('location' => $momurl, 'style' => SOAP_DOCUMENT, 'trace' => true, 'soap_version' => SOAP_1_1, 'exceptions' =>真,'压缩' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP));$header='<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><wsse:UsernameToken wsu:Id="UsernameToken-45"><wsse:Username>'.$username.'</wsse:Username><wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">'.$password.'</wsse:密码></wsse:UsernameToken></wsse:安全>';echo("

\n");$headerSoapVar = new SoapVar($header,XSD_ANYXML);$soapheader = new SoapHeader('wsse', "Security" , $headerSoapVar , true);$client->__setSoapHeaders($soapheader);$params['createLead'] = 数组('LeadSourceId' =>'23627e70-a29e-e211-b8a8-005056b81ebe','AffiliateLeadReference' =>'852800020','标题' =>数组('代码' => '852800018'),'首字母' =>'MD','首选名称' =>'马吕斯','名字' =>'马吕斯','姓氏' =>'德鲁','PreferredCorrespondenceLanguage' =>数组('代码' => '852800001'),'首选通信方法' =>数组('代码' => '852800000'),'活动' =>数组('代码' => '95D9042A-440E-E311-A5EB-005056B81EA5'),'家庭电话号码' =>'0723621762','商务电话号码' =>'0723621762','手机号码' =>'0723621762','电子邮件地址' =>'mdrew@gmail.com','注释' =>'IMU','产品类别' =>数组('代码' => 'd000083d-229c-e211-b8a8-005056b81ebe'));尝试 {echo $result = $client->__call("createLead", array($params));echo "请求:\n" .htmlentities($client->__getLastRequest()) ."\n";echo "请求:\n" .$client->__getLastRequestHeaders() ."\n";} 捕获(异常 $e){$ml = new SimpleXMLElement($client->__getLastRequest());$ml->asXML('new.xml');echo "请求:\n" .htmlentities($client->__getLastRequest()) ."\n";echo "请求:\n" .$client->__getLastRequestHeaders() ."\n";$msgs = $e->getMessage();echo "错误: $msgs";}?>

有什么建议吗?我非常需要你的帮助.谢谢!

解决方案

我能够使用以下代码连接到网络服务:

$client = new SoapClient ($wsdl, array('location' => $momurl, 'action'=>$action, 'style' => SOAP_DOCUMENT, 'trace' => 1, 'soap_version' => SOAP_1_1, 'exceptions' => false, 'compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP, 'ssl_method' => SOAP_SSL_METHOD_TLS));$header='<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu=http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><wsse:UsernameToken wsu:Id="UsernameToken-45"><wsse:Username>'.$usname.'</wsse:Username><wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">'.$password.'</wsse:密码></wsse:UsernameToken></wsse:安全>';$headerSoapVar = new SoapVar($header,XSD_ANYXML);$soapheader = new SoapHeader('wsse', "Security" , $headerSoapVar , true);$client->__setSoapHeaders($soapheader);$params['/* 要使用的函数或方法 */'] = array(/* 在此处插入参数 */);$result = $client->__soapCall("/* 你要使用的函数或方法 */", $params);

检查您的请求的标头部分是否与我的类似.如果不是,那么只需使用您自己的标题.基本上,只需复制请求的标头部分,然后设置用户名和密码的变量即可.我已经在另一个网络服务上尝试过,它运行良好.

I've tried almost all the possible solutions I could find but I can't seem to get this script working. Here are some of my previous attempts:

How to use wse-php library to connect to secured webservices via SOAP

https://stackoverflow.com/questions/18952222/soap-error-encoding-object-has-no-createlead-property-php

How to solve Error: SOAP-ERROR: Encoding: object has no 'createLead' property?

How to Consume a secured web service with WS-Security via SOAP [PHP]?

Here's my latest attempt:

<?php  
try    {
$username = 'derek';
$password = 'Momentum1';
$url = "https://integrationdev.momentum.co.za/sales/CRMService/CRMLeadService_v1_0/"; 

$xml = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://www.momentum.co.za/crm/service/application/CRMLeadService/v1.0" xmlns:v11="http://www.momentum.co.za/crm/service/type/application/Lead/v1.0" xmlns:v12="http://www.momentum.co.za/crm/service/type/TitleType/v1.0" xmlns:v13="http://www.momentum.co.za/crm/service/type/LanguageType/v1.0" xmlns:v14="http://www.momentum.co.za/crm/service/type/PreferredContactMethodType/v1.0" xmlns:v15="http://www.momentum.co.za/crm/service/type/CampaignType/v1.0" xmlns:v16="http://www.momentum.co.za/crm/service/type/ProductCategoryType/v1.0">
   <soapenv:Header>
      <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
         <wsse:UsernameToken>
            <wsse:Username>derek</wsse:Username>
            <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">Momentum1</wsse:Password>
         </wsse:UsernameToken>
      </wsse:Security>
   </soapenv:Header>
   <soapenv:Body>
      <v1:CreateLeadRequest>
         <createLead>
            <v11:LeadSourceId>23627e70-a29e-e211-b8a8-005056b81ebe</v11:LeadSourceId>
            <v11:AffiliateLeadReference>852800020</v11:AffiliateLeadReference>
            <v11:Title>
               <v12:Code>852800018</v12:Code>
            </v11:Title>
            <v11:Initials>MD</v11:Initials>
            <v11:PreferredName>Marius</v11:PreferredName>
            <v11:FirstName>Marius</v11:FirstName>
            <v11:LastName>Drew</v11:LastName>
            <v11:PreferredCorrespondenceLanguage>
               <v13:Code>852800001</v13:Code>
               <v13:Description>?</v13:Description>
            </v11:PreferredCorrespondenceLanguage>
            <v11:PreferredCommunicationMethod>
               <v14:Code>852800000</v14:Code>
            </v11:PreferredCommunicationMethod>
            <v11:Campaign>
               <v15:Code>95D9042A-440E-E311-A5EB-005056B81EA5</v15:Code>
            </v11:Campaign>
            <v11:HomePhoneNumber>0723621762</v11:HomePhoneNumber>
            <v11:BusinessPhoneNumber>0723621762</v11:BusinessPhoneNumber>
            <v11:MobilePhoneNumber>0723621762</v11:MobilePhoneNumber>
            <v11:EmailAddress>mdrew@gmail.com</v11:EmailAddress>
            <v11:Notes>IMU</v11:Notes>
            <v11:ProductCategories>
               <v16:Code>d000083d-229c-e211-b8a8-005056b81ebe</v16:Code>
            </v11:ProductCategories>
         </createLead>
      </v1:CreateLeadRequest>
   </soapenv:Body>
</soapenv:Envelope>';       

$content = utf8_encode($xml); 
$content_length = strlen($xml);  

$headers = array('Content-Type: application/soap+xml; charset=utf-8', 'Content-Length: ' . $content_length); 

$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, $url); 
curl_setopt ($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt ($ch, CURLOPT_POSTFIELDS, $content); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
$output = curl_exec($ch); 
curl_close($ch);  

print $output; 
} catch (Exception $e) { 
    var_dump($e); 
} 
?>

I think there's something wrong with the way I send my message. Is it possible that the problem is my WSDL and its location?

I'm already working on this for a week and I'm getting frustrated already. This WS-Security stuff is a pain. I tried using the suggestions here on StackOverflow such as creating a class which extends to SoapClient but still did not work. I hope somebody could be angel and help me with this. Thanks!

Oh, by the way, here's the RAW XML message request on SOAPUI:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://www.momentum.co.za/crm/service/application/CRMLeadService/v1.0" xmlns:v11="http://www.momentum.co.za/crm/service/type/application/Lead/v1.0" xmlns:v12="http://www.momentum.co.za/crm/service/type/TitleType/v1.0" xmlns:v13="http://www.momentum.co.za/crm/service/type/LanguageType/v1.0" xmlns:v14="http://www.momentum.co.za/crm/service/type/PreferredContactMethodType/v1.0" xmlns:v15="http://www.momentum.co.za/crm/service/type/CampaignType/v1.0" xmlns:v16="http://www.momentum.co.za/crm/service/type/ProductCategoryType/v1.0">
   <soapenv:Header>
      <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
         <wsse:UsernameToken>
            <wsse:Username>817221</wsse:Username>
            <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">1234</wsse:Password>
         </wsse:UsernameToken>
      </wsse:Security>
   </soapenv:Header>
   <soapenv:Body>
      <v1:CreateLeadRequest>
         <createLead>
            <v11:LeadSourceId>23627e70-a29e-e211-b8a8-005056b81ebe</v11:LeadSourceId>
            <v11:AffiliateLeadReference>852800020</v11:AffiliateLeadReference>
            <v11:Title>
               <v12:Code>852800018</v12:Code>
            </v11:Title>
            <v11:Initials>MD</v11:Initials>
            <v11:PreferredName>Marius</v11:PreferredName>
            <v11:FirstName>Marius</v11:FirstName>
            <v11:LastName>Drew</v11:LastName>
            <v11:PreferredCorrespondenceLanguage>
               <v13:Code>852800001</v13:Code>
               <v13:Description>?</v13:Description>
            </v11:PreferredCorrespondenceLanguage>
            <v11:PreferredCommunicationMethod>
               <v14:Code>852800000</v14:Code>
            </v11:PreferredCommunicationMethod>
            <v11:Campaign>
               <v15:Code>95D9042A-440E-E311-A5EB-005056B81EA5</v15:Code>
            </v11:Campaign>
            <v11:HomePhoneNumber>0723621762</v11:HomePhoneNumber>
            <v11:BusinessPhoneNumber>0723621762</v11:BusinessPhoneNumber>
            <v11:MobilePhoneNumber>0723621762</v11:MobilePhoneNumber>
            <v11:EmailAddress>mdrew@gmail.com</v11:EmailAddress>
            <v11:Notes>IMU</v11:Notes>
            <v11:ProductCategories>
               <v16:Code>d000083d-229c-e211-b8a8-005056b81ebe</v16:Code>
            </v11:ProductCategories>
         </createLead>
      </v1:CreateLeadRequest>
   </soapenv:Body>
</soapenv:Envelope>

This works perfectly on SOAPUI but it returns a soapenv:Client Internal Error on PHP.

Here's another version of the script that I've made. It still gives out an Internal Error though. Maybe there's a problem with the construction of the header that deals with the WS-Security on the web service.

<?php
$wsdl = "http://imupost.co.za/momentumcrm/CRMLeadServiceV10.wsdl";
$momurl = "https://integrationdev.momentum.co.za/sales/CRMService/CRMLeadService_v1_0/";
echo("Post to URL: {$momurl}\n");

$username = "derek";
$password = "Momentum1";

echo("<pre>\n");
$client = new SoapClient ($wsdl, array('location' => $momurl, 'style' => SOAP_DOCUMENT, 'trace' => true,  'soap_version' => SOAP_1_1, 'exceptions' => true, 'compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP));

$header='
    <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
        <wsse:UsernameToken wsu:Id="UsernameToken-45">
            <wsse:Username>'.$username.'</wsse:Username>
            <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">'.$password.'</wsse:Password>
        </wsse:UsernameToken>
    </wsse:Security>
    ';

echo("<pre>\n");

$headerSoapVar = new SoapVar($header,XSD_ANYXML); 
$soapheader = new SoapHeader('wsse', "Security" , $headerSoapVar , true);
$client->__setSoapHeaders($soapheader);

$params['createLead'] = array(
        'LeadSourceId' => '23627e70-a29e-e211-b8a8-005056b81ebe',
        'AffiliateLeadReference' => '852800020',
        'Title' => array('Code' => '852800018'),
        'Initials' => 'MD',
        'PreferredName' => 'Marius',
        'FirstName' => 'Marius',
        'LastName' => 'Drew',
        'PreferredCorrespondenceLanguage' => array('Code' => '852800001'),
        'PreferredCommunicationMethod' => array('Code' =>'852800000'),
        'Campaign' => array('Code' => '95D9042A-440E-E311-A5EB-005056B81EA5'),
        'HomePhoneNumber' => '0723621762',
        'BusinessPhoneNumber' => '0723621762',
        'MobilePhoneNumber' => '0723621762',
        'EmailAddress' => 'mdrew@gmail.com',
        'Notes' => 'IMU',
        'ProductCategories' => array('Code' => 'd000083d-229c-e211-b8a8-005056b81ebe')
    ); 

try { 
    echo $result = $client->__call("createLead", array($params));
    echo "REQUEST:\n" . htmlentities($client->__getLastRequest())  . "\n";
    echo "REQUEST:\n" . $client->__getLastRequestHeaders()  . "\n";
} catch (Exception $e) { 
    $ml = new SimpleXMLElement($client->__getLastRequest());
    $ml->asXML('new.xml');
    echo "REQUEST:\n" . htmlentities($client->__getLastRequest())  . "\n";
    echo "REQUEST:\n" . $client->__getLastRequestHeaders()  . "\n";
    $msgs = $e->getMessage();
    echo "Error: $msgs"; 
} 
?>

Any suggestions? I badly needed your help. Thanks!

解决方案

I was able to connect to the webservice using the following code:

$client = new SoapClient ($wsdl, array('location' => $momurl, 'action'=>$action, 'style' => SOAP_DOCUMENT, 'trace' => 1,  'soap_version' => SOAP_1_1, 'exceptions' => false, 'compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP, 'ssl_method' => SOAP_SSL_METHOD_TLS));

$header='<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
        <wsse:UsernameToken wsu:Id="UsernameToken-45">
            <wsse:Username>'.$usname.'</wsse:Username>
            <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">'.$password.'</wsse:Password>
        </wsse:UsernameToken>
    </wsse:Security>';

$headerSoapVar = new SoapVar($header,XSD_ANYXML); 
$soapheader = new SoapHeader('wsse', "Security" , $headerSoapVar , true);
$client->__setSoapHeaders($soapheader);

$params['/* the function or method that you want to use */'] = array(/* insert your parameters here */);

$result = $client->__soapCall("/* the function or method that you want to use */", $params);

Check the header part of your request if it is similar to mine. If it's not then just use your own header. Basically, just copy your request's header part and just set the variables for username and password. I've tried it on another webservice and it's working fine.

这篇关于Web 服务 SOAP 请求适用于 SOAPUI,但不适用于 PHP的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆