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);