Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

   Рубрики
 
 
 
 

 Форуми
» SEO и оптимизация
» Всичко за PHP и Perl
» Всичко за C, C++ и .NET
» Всичко за Java и JSP
» Всичко за SQL и MySQL
» Всичко за XHTML и CSS
» Презентация на сайтове
 Сложни типове конструкции в SOAP с PHP
  1. Въведение
  2. SOAP - Сървър
  3. SOAP - Клиент
  4. Целият пример за тестване
Mutatos
     
Автор  Mutatos (12.11.2004 21:48)  съобщение до автора
Погледнат  6525 пъти  добави към любими
Оценка  добави коментар
Гласове  10  изпрати на приятел
Коментари  (2)  абонирай се за PHP
    Страница 4 / 4

 



Целият пример за тестване:

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?PHP
//
Include the NuSOAP library.
require("nusoap.php")

//
Create a new SOAP server instance.
$server = new soap_server;

//
Initialize WSDL support
$server->configureWSDL('BooksInterface', 'urn:BooksInterface');

//
Put the WSDL schema types in the namespace with the tns prefix
$server->wsdl->schemaTargetNamespace = 'urn:BooksInterface';

$server->wsdl->addComplexType(
   
'ArrayOfstring',
   
'complexType',
   
'array',
   
'',
   
'',
   
array(),
   
array(array('ref'=>'SOAP-ENC:Array','wsdl:arrayType'=>'xsd:string[]')),
   
'xsd:string'
);


$server->wsdl->addComplexType(
   
'BooksResponse',
   
'complexType',
   
'struct',
   
'all',
   
'',
   
array(
       
'title' => array('name' => 'title', 'type' => 'xsd:string'),
       
'author' => array('name' => 'author', 'type' => 'xsd:string'),
       
'isbn' => array('name' => 'isbn', 'type' => 'xsd:string')
    )
)
;

$server->wsdl->addComplexType(
   
'BooksResponseArray',
   
'complexType',
   
'array',
   
'',
   
'',
   
array(),
   
array(array('ref'=>'SOAP-ENC:Array','wsdl:arrayType'=>'tns:BooksResponse[]')),
   
'tns:BooksResponse'
);

//
Register the method CheckMember
$server->register('BookInformation',                 // method name
    array
('queryarray' => 'tns:ArrayOfstring'),        // input parameters
    array
('return' => 'tns:BooksResponseArray'),      // output parameters
   
'urn:BooksInterface',                           // namespace
   
'urn:BooksInterface#BookInformation',            // soapaction
   
'rpc',                                          // style
   
'encoded',                                      // use
   
'Get information about books'                     // documentation
);


function BookInformation($queryarray)
{
   
mysql_connect("localhost", "root", "");
   
mysql_select_db("test");
   
   
$books = array();
   
foreach ($queryarray as $value)
    {       
       
$sql = mysql_query("SELECT title, author, isbn FROM books WHERE title LIKE '%".$value."%' OR author LIKE '".$value."'");       
       
$i=0;
       
while($row = mysql_fetch_array($sql))
        {
           
$books[] = array(
               
'title' => $row['title'],
               
'author' => $row['author'],
               
'isbn' => $row['isbn']
                )
;
           
$i++;
       
}
    }
   
mysql_close();
   
   
return $books;
}

//
Begin the HTTP listener service
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
?>


CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
require_once('nusoap.php');
$client = new soapclient('http://localhost/soap/booksinterface.php');
//
Check for an error
$err = $client->getError();
if ($err)
{
   
echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
}

$params = array("PHP","John Smiley");

//
Call the SOAP method
$result = $client->call('BookInformation', array('name' => $params), 'urn:BooksInterface');

//
Check for a fault
if
($client->fault)
{
   
print_r($result);
}
else
{
  
// Check for errors
   
$err = $client->getError();
   
if ($err)
    {
       
echo '<h2>Error</h2><pre>' . $err . '</pre>';
   
}
   
else
   
{
       
echo "<table border=1>";
       
echo "<tr><td><b>Title</b></td><td><b>Author</b></td><td><b>ISBN</b></td></tr>";
       
for ($i=0; $i < count($result); $i++)
        {
           
echo "<tr><td>".$result[$i]['title']."</td><td>".$result[$i]['author']."</td><td>".$result[$i]['isbn']."</td></tr>";
       
}
       
echo "</table>";
       
   
}
}

?>



Заключение

Чрез сложните типове данни имате възможност да предавате голям и добре структуриран обем от информация. Надявам се с този урок да помогна на начинаещи програмисти в тази област и да съм им подбудил интереса към SOAP



 << Предишна страница  


Ключови думи: PHP webservice nusoap wsdl файл API soap Simple Object Access Protocol сървър клиент


Още уроци от тази рубрика


 
  • Подобни теми от myLinks
 

 За автора: Mutatos  
Николай Николов се занимава с програмиране на PHP/MySQL повече от 6 години. Заедно с разработката на уеб приложения на PHP, се занимава с Java, XML и Webservices.
   
 1 посетител чете този урок (0 потребители и 1 гост)  
Активни потребители: ---
   
  

Еmail  
 

Проблема при SOAP, е че има много голям overhead. Тъй че към тези MB ще се добавят още няколко при транспорта. Но това може да се игнорира в зависимост от това, какво приложение имаш. Толкова големи данни не нъм транспортирал, но според мен това е много за SOAP.

  Mutatos на 13.01.2008 16:06

  А по принцип, дали може да се работи с nuSoap библиотеката за пренос на повечко данни, грубо около 7-8 MB, примерно ?

  Нямам на разположение SOAP Server и затова искам да попитам ?

  Miro на 12.01.2008 14:04

 

 
  • Интересно от Софтуер
 



IT-PLACE.NET © 2004 - 2008