PDA

View Full Version : سوال: برگرداندن آرایه از وب سرویس و عدم نمایش آن در دات نت



fa_karoon
یک شنبه 29 دی 1392, 22:53 عصر
سلام دوستان، یه وب سرویس نوشتم با php و nusoap که یه آرایه ورودی می گیره و یه آرایه هم خروجی برمی گردونه. وقتی کلاینت رو به زبان php می نویسم هیچ مشکلی نداره و جواب می ده اما وقتی این وب سرویس رو add می کنم تو net. ورودی رو می گیره اما خروجی که می خواد برگردونه این خطا رو می ده : There is an error in XML document (1, 405).
کد سمت سرورم به این صورت هست ابتدا قسمت تعریف comlexType اش رو می ذارم بعد قسمت registerش و بعد هم خود تابع


require_once 'nusoap/nusoap.php';
$ns ="urn:mywsdl";
$server = new NuSOAP_Server();
$server->configureWSDL('MyWSDL', $ns);
$server->wsdl->addComplexType(
'ArrayOfstring',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array(),
array(
array(
'ref' => 'SOAP-ENC:arrayType',
'wsdl:arrayType' =>'xsd:string[]'
)
)
);





$server->register(
'Query', // Method Name
array('user' => 'xsd:string','pass' => 'xsd:string','msgIds'=>'tns:ArrayOfstring'), //Input Parameters
array('return' => 'tns:ArrayOfstring'), // Output Parameters
$ns, // Namespace
$ns . '#Query', // SOAPAction
'rpc', // Style
'encoded', // Use
'Get specific user info' // Documentation
);




function Query($user,$pass,$msgIds)))
{
error_log("msgIds: ".$msgIds."");
error_log("1 : ".count($msgIds));
foreach ($msgIds as $item) {
error_log("123 : ". $item);
}
$result = array();
$result[0]=$msgIds[0]+1;
$result[1]=$msgIds[1]+1;
$result[2]=$msgIds[2]+1;

foreach ($result as $item) {
error_log("123 : ". $item);
}
return $result;
}

لطفا راهنمایی کنید که اشکال کار از کجاست؟

MMSHFE
دوشنبه 30 دی 1392, 09:42 صبح
با PHP مشکلی ندارین؟ کد خروجی WSDL رو بگذارین ببینیم چی تولید شده (localhost/your_web_service.php?wsdl)

fa_karoon
دوشنبه 30 دی 1392, 10:25 صبح
با PHP مشکلی ندارین؟ کد خروجی WSDL رو بگذارین ببینیم چی تولید شده (localhost/your_web_service.php?wsdl)

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

<definitions targetNamespace="urn:mywsdl">
<types>
<xsd:schema targetNamespace="urn:mywsdl">
<xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<xsd:import namespace="http://schemas.xmlsoap.org/wsdl/"/>
<xsd:complexType name="ArrayOfString">
<xsd:complexContent>
<xsd:restriction base="SOAP-ENC:Array">
<xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="xsd:string[]"/>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
</xsd:schema>
</types>
<message name="QueryRequest">
<part name="user" type="xsd:string"/>
<part name="pass" type="xsd:string"/>
<part name="msgIds" type="tns:ArrayOfString"/>
</message>
<message name="QueryResponse">
<part name="return" type="tns:ArrayOfString"/>
</message>
<portType name="MyWSDLPortType">
<operation name="Query">
<documentation>Get specific user info</documentation>
<input message="tns:QueryRequest"/>
<output message="tns:QueryResponse"/>
</operation>
</portType>
<binding name="MyWSDLBinding" type="tns:MyWSDLPortType">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="Query">
<soap:operation soapAction="urn:mywsdl#Query" style="rpc"/>
<input>
<soap:body use="encoded" namespace="urn:mywsdl" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body use="encoded" namespace="urn:mywsdl" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
<service name="MyWSDL">
<port name="MyWSDLPort" binding="tns:MyWSDLBinding">
<soap:address location="http://localhost/dana/mywsdl.php"/>
</port>
</service>
</definitions>

fa_karoon
سه شنبه 01 بهمن 1392, 21:47 عصر
دوستان خواهشا لطفا، یه نظری یه تفقدی بفرمایید

aminpourazadeh
سه شنبه 22 اردیبهشت 1394, 10:11 صبح
این مشکل منم هست
http://barnamenevis.org/showthread.php?494878-%D9%85%D8%B4%DA%A9%D9%84-%D9%88%D8%B1%D9%88%D8%AF%DB%8C-%D9%BE%D8%A7%D8%B1%D8%A7%D9%85%D8%AA%D8%B1-%D8%A2%D8%B1%D8%A7%DB%8C%D9%87-%DA%86%D9%86%D8%AF-%D8%A8%D8%B9%D8%AF%DB%8C-%D8%AF%D8%B1-%DB%8C%DA%A9-%D8%AA%D8%A7%D8%A8%D8%B9-%D9%88%D8%A8-%D8%B3%D8%B1%D9%88%DB%8C%D8%B3

MMSHFE
سه شنبه 22 اردیبهشت 1394, 10:13 صبح
تاپیک 2 سال قبل رو بالا نیارین. تاپیک جداگانه بزنید. تاپیک قفل شد.