Foros del Web » Programando para Internet » PHP »

Enviar XML mediante POST a un Servidor

Estas en el tema de Enviar XML mediante POST a un Servidor en el foro de PHP en Foros del Web. Saludos, Son ya muchas las veces que he consultado este foro para intentar resolver mis dudas y a parte de que lo halla conseguido o ...
  #1 (permalink)  
Antiguo 28/10/2008, 04:34
 
Fecha de Ingreso: octubre-2008
Mensajes: 8
Antigüedad: 15 años, 5 meses
Puntos: 0
Pregunta Enviar XML mediante POST a un Servidor

Saludos,

Son ya muchas las veces que he consultado este foro para intentar resolver mis dudas y a parte de que lo halla conseguido o no, creo que ya es hora de registrarme y participar.
Por desgracia mi primera participación es para pedir ayuda.

Tengo una aplicación que vende productos on-line. Ahora la idea es montar un sistema que permita realizar el envio de esos productos mendiantes las herramientas de UPS. Para ello uno de los pasos que necesito hacer, es generar un XML y enviarlo mediante POST a un servidor. El XML lo tengo generado, pero no se como enviarlo, he estado buscando información pero creo que me estoy liando más. ¿Alguien sabe como hacerlo? ¿Alguien ha utilizado estas herramientas de UPS para desarrollar alguna aplicación similar?

Gracias.
  #2 (permalink)  
Antiguo 28/10/2008, 04:59
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Respuesta: Enviar XML mediante POST a un Servidor

puedes enviar el XML generado mediante un input tipo file en el formulario y recogerlo mediante $_FILES eso si, el form tiene que tener el enctype especifico, ejemplo:

Código HTML:
 <form action="" enctype="multipart/form-data" method="post">
 <input type="file" name="file" />
 <input type="submit" name="submit" />
 </form> 
para recogerlo mediante php: $_FILES['file']

para mirar los datos:
echo "<pre>";
print_r($_FILES['file']);
echo "</pre>";

suerte
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #3 (permalink)  
Antiguo 28/10/2008, 05:42
 
Fecha de Ingreso: octubre-2008
Mensajes: 8
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Enviar XML mediante POST a un Servidor

Cita:
Iniciado por ZiTAL Ver Mensaje
puedes enviar el XML generado mediante un input tipo file en el formulario y recogerlo mediante $_FILES eso si, el form tiene que tener el enctype especifico, ejemplo:

Código HTML:
 <form action="" enctype="multipart/form-data" method="post">
 <input type="file" name="file" />
 <input type="submit" name="submit" />
 </form> 
para recogerlo mediante php: $_FILES['file']

para mirar los datos:
echo "<pre>";
print_r($_FILES['file']);
echo "</pre>";

suerte
Gracias ZiTAL,

¿Pero no hay manera que se pueda enviar sin utilizar un form? Quiero decir, la idea es que me genera un XML en una carpeta y yo no tenga que darle a ningún botón ni elegir ningún fichero, sino que el mismo script coja el fichero y lo envie.
  #4 (permalink)  
Antiguo 28/10/2008, 06:04
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Respuesta: Enviar XML mediante POST a un Servidor

Puedes usar sockets o la extension curl para realizar una conexion HTTP con el servidor remoto y realizar peticiones HTTP (como es enviar los datos en xml).

Busca informacion sobre servicios web rest o restful (http://en.wikipedia.org/wiki/Represe...State_Transfer). Hay librerias para crear clientes REST.

De todas formas, asegurate de que el servicio de UPS es REST, y no SOAP. Si es soap, tambien hay librerias para hacer clientes soap.
  #5 (permalink)  
Antiguo 28/10/2008, 06:26
 
Fecha de Ingreso: octubre-2008
Mensajes: 8
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Enviar XML mediante POST a un Servidor

Gracias DarkJ,

Bueno, he conseguido mediante formulario enviar el XML y lo que me devuelve es lo siguente:

Código:
<TrackResponse>
  <Response>
    <TransactionReference>
      <XpciVersion>1.0</XpciVersion>
    </TransactionReference>
    <ResponseStatusCode>0</ResponseStatusCode>
    <ResponseStatusDescription>Failure</ResponseStatusDescription>
    <Error>
      <ErrorSeverity>Hard</ErrorSeverity>
      <ErrorCode>250000</ErrorCode>
      <ErrorDescription>Missing XML declaration in the XML document</ErrorDescription>
    </Error>
  </Response>
</TrackResponse>
El XML que yo envio es este:

Código:
<?xml version="1.0" ?>
	<AccessRequest xml:lang="en-US">
		<AccessLicenseNumber>3C26E3C5FB12C344</AccessLicenseNumber>
		<UserId>ART05</UserId>
		<Password>ARTCOM</Password>
	</AccessRequest>
<?xml version="1.0" ?>
	<TrackRequest>
		<Request>
			<TransactionReference>
				<CustomerContext>
					<InternalKey>guidlikesubstance</InternalKey>
				</CustomerContext>
				<XpciVersion>1.0</XpciVersion>
			</TransactionReference>
			<RequestAction>Track</RequestAction>
		</Request>
		<TrackingNumber>ART0000000001</TrackingNumber>
	</TrackRequest>
¿Sabéis que puede ser? Por lo que yo entiendo se pierde la declaración del XML, pero la tengo puesta '<?xml version="1.0" ?>'.
  #6 (permalink)  
Antiguo 28/10/2008, 06:35
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Respuesta: Enviar XML mediante POST a un Servidor

Puede ser que no acepte el envio de los datos como valor de un campo de formulario envia via POST, y lo que realmente necesita es que envies el XML como cuerpo del mensaje y envies el mensaje via post. Esto me suena mas a un servicio web soap. En algun sitio del manual del servicio te diran si es un servicio soap, quizas te dan un fichero WDSL.

Por cierto, la declaracion <?xml la has repetido, no se si solo en el mensaje o tambien en tu codigo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 20:02.