Reply to xmlrpc: no content-length in response

Your name:

Reply:


Posted by emielvl on 02/14/06 19:30

Hello,

I'm developing a client/server architecture based on the XML-RPC
implementation in php4. All works pretty well, except that in the
response from the server there is no "Content-Length" in the header.
Since the XML-RPC specification requires this header to be present in
the server response, some libraries (notably: libxmlrpc++) choke on
this. For clarity, here's a (simple) server (slightly altered from:
http://www.devshed.com/c/a/PHP/Using-XMLRPC-with-PHP/4/):

--- xmlrpc-server.php ---
<?php

function checkVersion_func( $method_name, $params, $app_data ) {
return 0.12;
}

xmlrpc_server_register_method($xmlrpc_server, "checkVersion",
"checkVersion_func");

/*
* When an XML-RPC request is sent to this script, it
* can be found in the raw post data.
*/
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA
: "";

$request_xml = $HTTP_RAW_POST_DATA;


/*
* The xmlrpc_server_call_method() sends a request to
* the server and returns the response XML. In this case,
* it sends the raw post data we got before. It requires
* 3 arguments:
* The first is the handle of a server created with
* xmlrpc_server_create(), the second is a string containing
* an XML-RPC request, and the third is for application data.
* Whatever is passed into the third parameter of this function
* is passed as the third paramater of the PHP function that the
* request is asking for.
*/
$response = xmlrpc_server_call_method($xmlrpc_server, $request_xml,
'');

// Now we print the response for the client to read.
print $response;

xmlrpc_server_destroy($xmlrpc_server);

?>
--- end ---

Now, if we call 'checkVersion' with an RPC client, the output from
ngrep is this:

--- ngrep ---
####
T xxxxx:52266 -> xxxxx:80 [AP]
POST /~xxxxx/pb/xmlrpc-server.php HTTP/1.1.
User-Agent: XMLRPCCocoa.
Host: xxxxxx
Pragma: no-cache.
Accept: */*.
Content-Type: text/xml.
Content-Length: 110.
..
<?xml version="1.0"?>
<methodCall>
..<methodName>checkVersion</methodName>
..<params>
...</params>
..</methodCall>
##
T xxxxx:80 -> xxxxx:52266 [AP]
HTTP/1.1 200 OK.
Date: Tue, 14 Feb 2006 17:20:21 GMT.
Server: Apache/1.3.34 (Ubuntu) PHP/4.4.2-1.
X-Powered-By: PHP/4.4.2-1.
Transfer-Encoding: chunked.
Content-Type: text/html; charset=iso-8859-1.
..
a7 .
<?xml version="1.0" encoding="iso-8859-1"?>
<methodResponse>
<params>
<param>
<value>
<double>0.120000</double>
</value>
</param>
</params>
</methodResponse>

--- end ---

As you can see, there is no "Content-Length" in the response. Am I
doing something wrong here, or could this be a bug in php? Btw. I tried
this on different servers, with the same results.

Server version info:
Platform: Linux (ubuntu)
Apache: 1.3.34
PHP: 4.4.2-1
XMLRPC: xmlrpc-epi v. 0.51

Thanks for any help,
Emiel.

[Back to original message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация