PDA

View Full Version : سوال: مشکل در فراخوانی وب سرویس



رامین مرادی
یک شنبه 24 دی 1396, 10:23 صبح
سلام وقت بخیر دوستان من با کد زیر وب سرویسی که دارم رو فراخوانی میکنم.


<?php
echo '1 </br>';
$wsdl_url = 'http://----------:-----/aradservice1/aradservice.asmx?wsd1';
echo '2';
$client = new SOAPClient($wsdl_url,true);
echo '3';
$params = array(
'Unit' => ''
,'CertificateId' => ''
,'Date' => ''
);
echo '4';
$result = $client->AutCertif($params);
echo '5';
echo $result->HelloWorldResult;
?>

برای تریس کردنشم عددا رو چاپ میکنم تا بدونم تا کجاش اجرا میشه که تا 2 میره جلو یعنی
$client = new SOAPClient($wsdl_url,true); اجرا نمیشه

اینم wsdl وب سرویسم هست ممنون میشم راهنماییم کنید مشکل از کجاست:گریه:



<wsdl:definitions targetNamespace="http://tempuri.org/">
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">
<s:element name="AutCertif">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Unit" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="CertificateId" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Date" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="AutCertifResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="AutCertifResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</wsdl:types>
<wsdl:message name="AutCertifSoapIn">
<wsdl:part name="parameters" element="tns:AutCertif"/>
</wsdl:message>
<wsdl:message name="AutCertifSoapOut">
<wsdl:part name="parameters" element="tns:AutCertifResponse"/>
</wsdl:message>
<wsdl:portType name="AradServiceSoap">
<wsdl:operation name="AutCertif">
<wsdl:input message="tns:AutCertifSoapIn"/>
<wsdl:output message="tns:AutCertifSoapOut"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="AradServiceSoap" type="tns:AradServiceSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="AutCertif">
<soap:operation soapAction="http://tempuri.org/AutCertif" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="AradServiceSoap12" type="tns:AradServiceSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="AutCertif">
<soap12:operation soapAction="http://tempuri.org/AutCertif" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="AradService">
<wsdl:port name="AradServiceSoap" binding="tns:AradServiceSoap">
<soap:address location="http://----------:----/aradservice1/aradservice.asmx"/>
</wsdl:port>
<wsdl:port name="AradServiceSoap12" binding="tns:AradServiceSoap12">
<soap12:address location="http://-------:----/aradservice1/aradservice.asmx"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

plague
یک شنبه 24 دی 1396, 12:18 عصر
چه خروجی میده صفحه ؟ آیا صفحه سفید میاد ؟ در اینصورت احتمالا بابت اینه که اررور ها رو غیر فعال کردن رو سرورت و نشون نمیده
فعالشون کن ببین اررورت چیه
از try/catch هم استفاده کنی فکر میکنم جواب بده حتی اگه اررور ها غیر فعال باشه



try
{
$client = new SOAPClient($wsdl_url,true);
}
catch(Exception $e){

echo 'ERROR : ' . $e->getMessage();
exit;
}

در ضمن فکر میکنم آرگومان دوم تابع SOAPClient باید یک آرایه ای از پارمتر ها باشه نه true

رامین مرادی
یک شنبه 24 دی 1396, 12:44 عصر
چه خروجی میده صفحه ؟ آیا صفحه سفید میاد ؟ در اینصورت احتمالا بابت اینه که اررور ها رو غیر فعال کردن رو سرورت و نشون نمیده
فعالشون کن ببین اررورت چیه
از try/catch هم استفاده کنی فکر میکنم جواب بده حتی اگه اررور ها غیر فعال باشه



try
{
$client = new SOAPClient($wsdl_url,true);
}
catch(Exception $e){

echo 'ERROR : ' . $e->getMessage();
exit;
}

در ضمن فکر میکنم آرگومان دوم تابع SOAPClient باید یک آرایه ای از پارمتر ها باشه نه true


کلا سفید برمیگردونه . اما تو برنامه های ویندوزی کار میکنه. چیزی رو باید تو هاست فعال کنم؟

رامین مرادی
یک شنبه 24 دی 1396, 12:46 عصر
رفتم از تغییر نسخه پی اچ پی soap رو تیکشو زدم. الان این خطا رو میده



ERROR : SoapClient::SoapClient(): Invalid parameters


:گریه:

رامین مرادی
یک شنبه 24 دی 1396, 13:03 عصر
خب به صورت زیر نوشتم.




try
{

$client = new SOAPClient($wsdl_url);

}
catch(Exception $e)
{
echo 'ERROR : ' . $e->getMessage(); exit;
}
$params = array(
'Unit' => ''
,'CertificateId' => ''
,'Date' => ''
);
echo '4';
$result = $client->AutCertif($params);

echo $result;




خطای زیر اومده


ERROR : SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://-----:----/aradservice1/aradservice.asmx?wsdl' : failed to load external entity "http://-----:----/aradservice1/aradservice.asmx?wsdl"

plague
دوشنبه 25 دی 1396, 11:25 صبح
نوشته نمیتونم لود کنم چندین تا علت میتونه داشته باشه از اشتباه نوشتن لینک وبسرویس تا اشتباه فرستادن پارامتر ها یا ....
سرچ کن متن اررور رو تو نت

SOAP-ERROR: Parsing WSDL: Couldn't load from failed to load external entity

ببین چی پیشنهاد میکنن بقیه شاید یکیشون جواب داد

رامین مرادی
دوشنبه 25 دی 1396, 11:44 صبح
ممنون بابت نظراتتون. مشکل از هاست بود. چون همین وب سرویس رو با برنامه ویندوزی استفاده کرده بودم. تیکت زدم و درست کردن.