ASP.NET/C# client for using the PHP / MYSQL web service (WSDL)

I am trying to access a web service (two files below). The client uses ASP.NET/C# for its web architecture. I can add a web link, but for some reason I cannot create a proxy class for the wsdl file. The goal is to use the function in the server.php file so that I can use xmlstring to display the data on the ASP.NET website. Any help would be greatly appreciated. Many thanks


server.php file. This file has a php function that retrieves data from mysql db, and the function returns the data as an XML string.

<?php //WEB SERVICE FUNCTION TO EXTRACT DATA FROM CLIENT B INTO XML FORMAT function getXML() { //CONNECT TO THE DATABASE SERVER $dbserverIP = "xxxxxxx"; $dbusername = "xxxxxxx"; $dbpassword = "xxxxxxx"; $dbconnection = mysql_connect($dbserverIP,$dbusername,$dbpassword) or die ("The connection to the database server failed."); //CONNECT TO THE DATABASE $dbname = "xxxxxxxx"; $dbselectok = mysql_select_db($dbname,$dbconnection) or die ("The connection to the database failed."); //QUERY THE DATABASE $sqlquery = "SELECT * FROM videogames"; $sqlresult = mysql_query($sqlquery,$dbconnection) or die ("Error in executing the SQL statement"); //CREATE XML STRING $xmlstring = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"; $xmlstring.= "<videogames>"; while ($row = mysql_fetch_array($sqlresult)) { $xmlstring .= "\t<game>\r\n"; $xmlstring .= "\t\t<gametitle>" .$row["gametitle"]. "</gametitle>\r\n"; $xmlstring .= "\t\t<genre>" .$row["genre"]. "</genre>\r\n"; $xmlstring .= "\t\t<year>" .$row["year"]. "</year>\r\n"; $xmlstring .= "\t\t<platform>" .$row["platform"]. "</platform>\r\n"; $xmlstring .= "\t\t<agerating>" .$row["agerating"]. "</agerating>\r\n"; $xmlstring .= "\t\t<price>" .$row["price"]. "</price>\r\n"; $xmlstring .= "\t</game>\r\n"; } $xmlstring.= "</videogames>"; //WRITE XML STRING TO EXTERNAL FILE $filename = "videogames.xml"; $fileaccessmode = "w"; $fptr = fopen($filename,$fileaccessmode); fwrite($fptr,$xmlstring); fclose($fptr); //FREE UP MEMORY mysql_free_result($sqlresult); mysql_close($dbconnection); return $xmlstring; } //CODE TO DISABLE THE WSDLE CACHE ini_set("soap.wsdl_cache_enabled","0"); //DEFINE SOAP SERVER INSTANCE AND RELATED WSDL FILE //THE service.wsdl FILE IS IN THE SAME FOLDER AS THIS server.php FILE $server = new SoapServer("service.wsdl"); //ADD FUNCTION TO THE SERVER INSTANCE $server->addFunction("getXML"); //ACTIVATE THE SOAP HANDLER $server->handle(); ?> 

This is the WSDL file associated with the server.php file.

 <?xml version ='1.0' encoding ='UTF-8' ?> <!-- ====================== DEFINITIONS ====================== --> <definitions name="MyWebService" targetNamespace="http://cet-apache-04.cet.bolton.ac.uk/student/mib1bee/CST3017/assignment/scenario1/service.wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://cet-apache-04.cet.bolton.ac.uk/student/mib1bee/CST3017/assignment/scenario1/service.wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <!-- ====================== TYPES ============================ --> <!-- No need for type definitions as only xsd built-in ======= --> <!-- data types are used --> <!-- ========================================================= --> <!-- ====================== MESSAGE ========================== --> <message name="getXML_Request"> <part name="input" /> </message> <message name="getXML_Response"> <part name="xmlString" type="xsd:string"/> </message> <!-- ====================== PORT TYPE ============================ --> <portType name="myWebService_PortType"> <operation name="getXML"> <input message="tns:getXML_Request"/> <output message="tns:getXML_Response"/> </operation> </portType> <!-- ======================= BINDING ============================= --> <binding name="myWebService_Binding" type="tns:myWebService_PortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="getXML"> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <!-- ======================= SERVICE ============================= --> <service name="myWebService_Service"> <port name="myWebService_Port" binding="tns:myWebService_Binding"> <soap:address location="http://cet-apache-04.cet.bolton.ac.uk/student/mib1bee/CST3017/assignment/scenario1/server.php"/> </port> </service> </definitions> 
+6
source share
3 answers

You need to fix your wsdl:

 <operation name="getXML"> <soap:operation soapAction="urn:MyWebService#getXML"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> 
0
source

You just need to look through this article and you will get a clear idea of ​​your answers.

follow the links:

php web service for net

+1
source

In the past, I had problems getting .Net for using web services created using wsdl in rpc / literal format. Try converting your WSDL to document / literal format and you need more luck.

0
source

Source: https://habr.com/ru/post/915538/


All Articles