Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [WebService] come fare?

    Salve a tutt!
    vorrei fare un webservice per effettuare la ricerca di dati in database sql...il problema è che non so fare i webservice in php ... mi potete fare un esempio semplice? (so fare i webservice in c#, può aiutarmi??)
    Piero

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    un webservice nella sua accezione più semplice è pensabile come una pagina web che risponde ad una specifica richiesta.
    Se sai già farli in C# (posta al limite un sunto di un esempio) non cambia molto.

    In pratica puoi partire realizzando una semplice "pagina".

    Indica cosa ti potrebbe interessare realizzare...

  3. #3
    Questo è il webservice che ho realizzato in c#:

    <%@ WebService language="C#" class="ricerca"%>
    using System;
    using System.Web.Services;
    using System.Xml.Serialization;
    using MySql.Data;
    using MySql.Data.MySqlClient;
    using System.Data;

    [WebService(Namespace="http://localhost")]
    public class ricerca : WebService
    {
    [WebMethod]
    public DataSet Search(string a, string b, string connStr)
    {
    //string connStr="Database=prova; Data Source=localhost;User Id=root; Password=";
    MySqlConnection myConn = new MySqlConnection(connStr);
    string query = "SELECT * FROM contatti WHERE "+a+"='"+b+"';";
    MySqlCommand cmd = new MySqlCommand(query, myConn);
    MySqlDataAdapter myAdapter = new MySqlDataAdapter();
    myAdapter.SelectCommand = cmd;
    DataSet tab = new DataSet();
    myConn.Open();
    myAdapter.Fill(tab, "Risultati ricerca");
    myConn.Close();
    return tab;
    }

    }

    Fa le stesse cose che devo far fare al database in php,cioè effettuare una ricerca su un database creato con MySQL.

    come posso fare?
    Piero

  4. #4
    aiuto .....ho creato questo webservice...a parte il dubbio se è giusto o meno....come faccio a farlo utilizzare a una mia pagina php?????? ho letto su una guida di questo sito che si deve fare un'animazione flash, ma non ho capito come...non c'è un modo più semplice per consumare un webservice??? se include il contenente il codice riportato qui sotto (ws.php) mi esce semplicemente la stessa cosa che vedo se apro ws.php direttamente dal browser (ok, questo è giusto, no?)...voglio usare la funzione ricerca...come???


    <?

    require_once("nusoap.php");
    include ("config.php");

    define("NAMESPACE", "http://localhost:81");

    $server = new soap_server;

    $server->debug_flag=false;


    $server->configureWSDL('GestioneDati', NAMESPACE);
    $server->wsdl->schemaTargetNamespace = NAMESPACE;


    $server->wsdl->addComplexType('search','complexType','struct', 'all','',array('user' =>array('name'=>'user','type'=>'xsd:string'),'pass ' =>array('name'=>'pass','type'=>'xsd:string'), 'datasource' =>array('name'=>'datasource','type'=>'xsd:string') , 'database' =>array('name'=>'database','type'=>'xsd:string'),) );

    $server->register('ricerca',array('categoria'=>'xsd:string ', 'valore' => 'xsd:string'),array('return'=>'tns:risultati'),NAM ESPACE);


    function ricerca($categoria, $valore) {
    $link = mysql_connect($db_host, $db_user, $db_password) or die('Could not connect: ' . mysql_error());
    mysql_select_db($db_name) or die('Could not select database');

    $query = "SELECT * FROM contatti WHERE $categoria = '$valore'";
    $result = mysql_query($query) or die('Query failed: ' . mysql_error());

    $dato=$result;
    //mysql_free_result($result);
    mysql_close($link);
    return $dato;
    }

    $HTTP_RAW_POST_DATA = isset($GLOBALS['HTTP_RAW_POST_DATA']) ?$GLOBALS['HTTP_RAW_POST_DATA'] : '';
    $server->service($HTTP_RAW_POST_DATA);
    exit();
    ?>
    Piero

  5. #5
    le nusoap funzionano ASSOLUTAMENTE uno schifo, soprattutto se ti devi interfacciare con webservice scritti in .NET o client scritti in .NET ... parlo per esperienza

    devi assolutamente utilizzare il supporto SOAP del PHP

  6. #6
    ah...ok..però dato che non sono ancora un esperto....cosa cambia rispetto al codice che postato qui sopra? cosa devo fare? e poi cosa faccio per usare la funzione che definisco?
    Piero

  7. #7
    ho provato a scrivere questo su un file php per tentare di utilizzare la funzione ricerca definita nel webservice....però non vedo niente....

    <?php
    require_once("nusoap.php");
    include ("config.php");
    include ("top_foot.php");
    //include("http://localhost:81/provamia.php");
    //<soap:address location="http://localhost:81/provamia.php"/>

    $categoria=$_REQUEST['categoria'];
    $valore=$_REQUEST['valore'];
    top();
    echo'Risultati ricerca:';


    $wsdl="http://localhost:81/provamia.php?wsdl";
    $client=new soapclient($wsdl, true);
    $param=array('str1'=>'nome', 'str2'=>'Piero');
    echo $client->call('ricerca', $param);


    //$result=ricerca($categoria, $valore);

    ?>
    <form method="post" action="ricerca.php">


    <input type="submit" value="Cerca ancora" />
    </form>
    <form method="post" action="home.php">


    <input type="submit" value="Home" />
    </form>

    <?
    // chiusura pagina
    foot();
    ?>

    ho modificato così il webservice in modo che stampi direttamente lui i risultati (almeno vorrei che così fosse)
    <?

    require_once("nusoap.php");
    include ("config.php");

    define("NAMESPACE", "http://localhost:81");

    $server = new soap_server;

    $server->debug_flag=false;


    $server->configureWSDL('GestioneDati', NAMESPACE);
    $server->wsdl->schemaTargetNamespace = NAMESPACE;


    $server->wsdl->addComplexType('search','complexType','struct', 'all','',array('user' =>array('name'=>'user','type'=>'xsd:string'),'pass ' =>array('name'=>'pass','type'=>'xsd:string'), 'datasource' =>array('name'=>'datasource','type'=>'xsd:string') , 'database' =>array('name'=>'database','type'=>'xsd:string'),) );

    $server->register('ricerca',array('categoria'=>'xsd:string ', 'valore' => 'xsd:string'),array('return'=>'tns:risultati'),NAM ESPACE);


    function ricerca($categoria, $valore) {
    $link = mysql_connect($db_host, $db_user, $db_password) or die('Could not connect: ' . mysql_error());
    mysql_select_db($db_name) or die('Could not select database');

    $query = "SELECT * FROM contatti WHERE $categoria = '$valore'";
    $result = mysql_query($query) or die('Query failed: ' . mysql_error());

    $dato=$result;
    //mysql_free_result($result);
    mysql_close($link);

    echo "<table>\n";

    while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
    echo "\t<tr>\n";
    foreach ($line as $col_value) {
    echo "\t\t<td>$col_value</td>\n";
    }
    echo "\t</tr>\n";
    }
    echo "</table>\n";
    return $dato;
    }

    $HTTP_RAW_POST_DATA = isset($GLOBALS['HTTP_RAW_POST_DATA']) ?$GLOBALS['HTTP_RAW_POST_DATA'] : '';
    $server->service($HTTP_RAW_POST_DATA);
    exit();
    ?>

    dov'è l'errore???
    Piero

  8. #8
    Qui c'è un esempio usando l'estensione stessa di PHP5 per sviluppare un server soap e nell'ultima pagina fa anche un esempio veloce riguardo a WSDL
    http://www.herongyang.com/php/php_soap_server.html

    Qui invece c'è la pagina del manuale
    http://it.php.net/soap

  9. #9
    ti chiedo scusa ma non riesco a capire lo stesso :master: .. in quel tutorial l'output non è come lo vorrei io...io voglio solo il risultato della funzione, mentre li ci sono molte informazioni in pù..come posso semplicemente usare la funzione del webservice come una funzione qualsiasi??
    Piero

  10. #10
    ho fatto altre ricerche in rete in questo tempo e ho scoperto diversi modi per fare un webservice con php (ovvio che non ho scoperto che l'acqua calda, ma sono nuovo di questo mondo )...cmq ho provato a fare un webservice in php con nusoap....anche se mi è stata consigliata come scelta, è quello che credo sia più facile per cominciare... volevo chiedervi come mai, quando chiamo la funzione, vedo solo una schermata bianca.
    Qui sotto c'è il facsimile del mio codice (facsimile perchè nn ce l'ho dietro mentre sto scrivendo, comunque il cadice l'ho copiato da quello che c'è qui sotto e poi l'ho modificato)

    <?
    require_once('nusoap.php');

    $wsdl="http://www.xmethods.net/sd/2001/CurrencyExchangeService.wsdl";
    $client=new soapclient($wsdl, 'wsdl');

    $param=array(
    'country1'=>'usa',
    'country2'=>'canada'
    );
    echo $client->call('getRate', $param);
    ?>

    :berto:
    Piero

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.