la funcion header lo que haria es regresar la cabecera para impresion en pantalla.. y lo que deberia de hacer es regresar el xml tal y como se supone que lo hace la libreria..  por lo que creo que eso no seria una salida..
 
El codigo de mi cliente es:  
 Cita:  private void btnupload_Click(object sender, EventArgs e)
        {            
            string n_archivo = txtpath.Text;
            try
            {
                System.IO.BinaryReader BinRead = new System.IO.BinaryReader(System.IO.File.Open(n_archi  vo, System.IO.FileMode.Open, System.IO.FileAccess.Read));
                WS.Credentials = System.Net.CredentialCache.DefaultCredentials;
                BinRead.BaseStream.Position = 0;
                txtrespuesta.Text = Convert.ToString(BinRead.BaseStream.Length);
                byte[] buffer = BinRead.ReadBytes(Convert.ToInt32(BinRead.BaseStre  am.Length));
                BinRead.Close();
 
                //WS.UploadArchivo(buffer, nombre_archivo);
                WS.UploadArchivo(Convert.ToString(buffer), nombre_archivo);
            }
            catch (Exception exec)
            {
                MessageBox.Show(this, exec.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    Y el codigo de mi servidor es el siguiente:  
 Código PHP:
    <?php
 
// Nota : Se debe tener desactivado el modulo php_soap
// ademas la variable allow_call_time_pass_reference debe estar en On
 
require_once('nusoap/nusoap-0.7.2/lib/nusoap.php');
$namespace = 'http://'.$_SERVER["SERVER_NAME"].$_SERVER["SCRIPT_NAME"];
$servidor = new soap_server;
 
$servidor->configureWSDL('Service',$namespace);
$servidor->wsdl->schemaTargetNamespace = $namespace;
 
//Aqui se declaran los metodos que son publicos
$servidor->register(
    'Hola',                                // nombre del metodo
    array('nombre' => 'xsd:string'),    // parametros de entrada
    array('return' => 'xsd:string'),    // parametros de salida
    'uri:Service',                      // namespace
    'uri:Service/Hola',                    // SOAPAction
    'rpc',                                // style
    'encoded'                            // use
);
 
$servidor->register(
    'DownloadArchivo',
    array ('filename' => 'xsd:string'),
    array ('return' => 'xsd:string'),
    'uri:Service',
    'uri:Service/DownloadArchivo',
    'rpc',
    'encoded'
);
 
$servidor->register(
    'UploadArchivo',
    array ('buffer' => 'xsd:string','filename' => 'xsd:string'),
    array ('return' => 'xsd:string'),
    'uri:Service',
    'uri:Service/DownloadArchivo',
    'rpc',
    'encoded'
);
 
$ArchivosEncontrados = array ('Encontrados' => '');
 
function Hola($nombre){
    return "Hola ".$nombre." Webservice funcionando al 100%";
}
 
function DownloadArchivo($filename) {
    $file = "images/".$filename;        
    $picture = fread(fopen($file,"rb", 0),filesize($file));
    $base64 = chunk_split(base64_encode($picture));
                  
    return $base64;
}
 
function UploadArchivo($buffer, $filename) {
    $directorio = "images/";
    $data = base64_decode($buffer);
    $im = imagecreatefromstring($data);
    imagejpeg($im,$directorio.$filename);
    imagedestroy($im);
    
    return;
}
 
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$servidor->service($HTTP_RAW_POST_DATA);