PDA

Ver la Versión Completa : Que significa el error: Received content of invalid Content-Type setting:text/html...


vfogliatti
09-01-2015, 22:21:23
Estoy intentando consumir un WebService.
Del lado del servidor tengo un PHP que usa NuSoap y funciona correctamente desde un cliente PHP (el cliente lo arme a los efectos de probar el servidor).

Ahora desde Delphi importe el WSDL, generandome el archivo .PAS (no describo el código porque el mensaje no se envía al foro si lo hago).

Agregue el objeto SOAP y lo configure.
Agregue un botón y ingrese el siguiente código:

ShowMessage((htpr1 as MiPrimerServicioWebPortType).mifuncion(1,3,'algo'));

Cuando ejecuto y hago un clic en el boton, me sale este error:

Proyect Proyect2.exe raised exception calss ESOAPHTTPException with message 'Received content of invalid Content-Type setting:text/html - SOAP expects "text/xml"'

Alguna idea de que estoy haciendo mal?

Busque el Google el error pero no di con la solución.

Espero haber explicado bien.
Gracias por su ayuda.

Saludos.
Verónica.

vfogliatti
10-01-2015, 22:35:48
Para que no quede abierto el tema, les comento que ya lo solucione. Era un problema del lado del servidor.

Estoy intentando implementar un WebService y lo estoy haciendo con NuSOAP + PHP del lado del servidor y Delphi del lado del cliente.
Si bien lo que voy a decir quizás sea una tontería, pero para aquellos que quieren empezar con este tema puede ser de ayuda estas recomendaciones (de principiante por supuesto).
1) Leer algo sobre el tema y de que trata la tecnología. Si no se entiende, al momento de los errores uno no sabe para donde ir.
2) Empezar con un ejemplo simple, por ejemplo, una función que devuelva un valor o un string (sin acceso a la base de datos).
3) Primero probar con un cliente hecho en PHP y una vez que funcione ir a Delphi (también se pueden usar otras herramientas para probar como Wizdl)
4) Cuando se quiera probar con un ejemplo que acceda a la base de datos, primero ejecutar la función en PHP como si fuese un PHP común, si anda bien incorporar la misma en el PHP que presta el servicio WS. Hay que asegurarse primero que el código funcione.
5) Hacer un ejemplo simple con acceso a la base de datos y con una tabla que tenga ID y NOMBRE para no complicarse y ver rápidamente, que las funciones que trabajan con la base de datos lo hagan correctamente.

El error que me dio era porque invertí las letras del nombre de una función. De tanto ver el código no me di cuenta, es por eso que me detuve y seguí estos pasos.

Bueno, espero que sirva de algo.
Saludos.
Verónica.

iAldito
21-01-2015, 15:49:04
Hola Vero, consulta...
Exactamente como resolviste el problema?
Sabes que tengo el mismo error de NuSoap al enviar un Array de estructura en una función al Servidor pero no encuentro solución :(
Quizas puedas ayudarme, gracias!

iAldito
22-01-2015, 21:06:35
creo que encontre mi falla pero no se como resolverla,
me parece que el error esta al tratar de tomar los valores del array de estructura que recibo desde Delphi,
por ejemplo el desde delphi mando el array TUsersArray, y quiero acceder a cada estructura TUsers que contiene y guardar el valor "user" en una variable.

como hago? :O

$server->wsdl->addComplexType(
‘TUsers’, ‘complexType’, ‘struct’, ‘all’, ”,
array(
‘id’ => array(‘name’ => ‘id’, ‘type’ => ‘xsd:integer’),
‘user’=>array(‘name’ => ‘user’, ‘type’ => ‘xsd:string’),
‘pass’=>array(‘name’ => ‘pass’, ‘type’ => ‘xsd:string’)
)
);
$server->wsdl->addComplexType(
‘TUsersArray’, ‘complexType’, ‘array’, ‘sequence’, ‘SOAP-ENC:Array’, array(),
array(
array(‘ref’ => ‘SOAP-ENC:arrayType’,
‘wsdl:arrayType’ => ‘tns:TUsers[]’
)
),
‘tns:TUsers’);

$server->register(“AddArray”,
array(‘users’ => ‘tns:TUsersArray’),
array(),
$ns,
false,
“rpc”,
“literal”,
“”);

function AddArray($users) {

// QUE HAGO??
}

nlsgarcia
22-01-2015, 21:08:59
iAldito,

¡Bienvenido al Club Delphi! :D

Te sugiero revisar la Guía de estilo de los foros (http://www.clubdelphi.com/foros/guiaestilo.php), recomendada a todos los nuevos ingresos al Club Delphi.

¡Gracias por tu cooperación! :) ^\||/

Saludos,

Nelson.

vfogliatti
22-01-2015, 23:49:23
iAldito, quizás si me comentas que es lo que tenes que hacer podría ayudarte.
Saludos.
Verónica.

iAldito
23-01-2015, 11:25:45
Vero, te cuento, en la funcion "AddArray($users)" de php, quiero recorrer cada "user" dentro de "$users" y guardar sus datos en variables para luego insertarlas en la base de datos, pero no se como hacerlo en php al ser un arreglo de array, me explico?

he intenado por ejemplo:

foreach( array_keys($users) as $item )
{
$text = $item['text'];
}


Pero "$text" siempre queda vacio sin el valor que quiero :(

PD: "$users" => tns:TUsersArray como lo describi en el msj anterior :)

Desde ya muchas gracias!

iAldito
23-01-2015, 12:00:39
perdon, ya lo solucione... error mio... soluciono quitando el "array_keys" y listo :)
gracias!!