Ir al contenido


Foto

Curl - RETURN NOTHING


  • Por favor identifícate para responder
49 respuestas en este tema

#21 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 18 marzo 2012 - 10:33


Hola amigo, ya te envíe por mensaje un link para que lo descargues.


Pues ahora estoy todavía mas confuso :(

Segun el log todo sale bien, no hay ni errores, ni reenvios, ni nada ... La única explicación que se me ocurre es el timeout, aunque ya vi que probaste a ponerle 3 minutos ¿probaste a poner 1 hora?

Siento no poder ser de mas ayuda. :(


En la última prueba le puse 480 segundos es decir 8 minutos y fué lo mismo, voy a probar con un timeout más alto cada vez, ya te comento si logré superar el problema. (y)

De cualquier forma haré la prueba con WSDL importer de Delphi a ver si sale de una u otra forma.

Saludos y muchas gracias.
  • 0

#22 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 18 marzo 2012 - 11:02

Pues no, llegue a 3600 segundos y no regreso nada :(

Saludos
  • 0

#23 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 19 marzo 2012 - 01:21

Pues a lo mejor el servidor no esta enviando nada ¿probaste con otro programa? ¿existe la posibilidad de no usar ssl para poder ver la comunicacion de ese otro programa?. A lo mejor en el caso de ficheros grandes se tenga que mandar otro tipo de cabeceras, algo que deje "despierta" la conexion, o a lo mejor usar oto user-agent, etc ... cualquier cosa que se nos haya escapado.
  • 0

#24 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 19 marzo 2012 - 08:10

Pues a lo mejor el servidor no esta enviando nada ¿probaste con otro programa? ¿existe la posibilidad de no usar ssl para poder ver la comunicacion de ese otro programa?. A lo mejor en el caso de ficheros grandes se tenga que mandar otro tipo de cabeceras, algo que deje "despierta" la conexion, o a lo mejor usar oto user-agent, etc ... cualquier cosa que se nos haya escapado.


Si, yo envío el mismo XML a través de soapUI y si obtengo respuesta del servidor.

Saludos
  • 0

#25 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 20 marzo 2012 - 05:58

Actualizando éste hilo, he estado haciendo pruebas ahora con WSDL Importer y me sigue dando el mismo problema

The operation timed out -


Ya implementé todo lo que me he encontrado al respecto, por ejemplo, agregando segundos a los TimeOut.....



delphi
  1.       PRIO.HTTPWebNode.ReceiveTimeout := 120000;
  2.       PRIO.HTTPWebNode.SendTimeout := 120000;



Y no funciona, lo raro es que si lo hago con SoapUI, lo hace perfectamente :(, o sea, el wey soy yo  :

Saludos
  • 0

#26 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 21 marzo 2012 - 01:22

Perdón por mi ignorancia pero, ¿que es SoapUI? ¿utiliza http o https? Si puede utilizar http podríamos "espiar" sus comunicaciones y ver si manda algo que tu no mandas

  • 0

#27 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 21 marzo 2012 - 09:36

Perdón por mi ignorancia pero, ¿que es SoapUI?


Es un programa que te permite realizar pruebas de SOAP, puedes importar un WSDL y generar todo un ambiente de pruebas. Me ha servido mucho para el desarrollo de mis webservices.

¿utiliza http o https? Si puede utilizar http podríamos "espiar" sus comunicaciones y ver si manda algo que tu no mandas


Ya hice la prueba enviando a http y ésto es lo que hace:

SoapUI:

POST /ventanilla-8-old/DigitalizarDocumentoService HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: "http://www.ventanill...lizarDocumento"
User-Agent: Jakarta Commons-HttpClient/3.1
Host: www2.ventanillaunica.gob.mx
Content-Length: 6363069

Curl:

POST /ventanilla-8-old/DigitalizarDocumentoService HTTP/1.1
Host: www2.ventanillaunica.gob.mx
Accept: */*
Content-Type: text/xml;charset=UTF-8
SOAPAction: "http://www.ventanill...lizarDocumento"
Accept-Encoding: gzip,deflate,identity
User-Agent: Jakarta Commons-HttpClient/3.1
Content-Length: 6460715


Ya no se que hacer, ahora resulta que los de VB si reciben y yo no  :

Saludos

  • 0

#28 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 21 marzo 2012 - 10:20

Hola

En otro foro (de VB) han dicho ésto que me parece relevante.

"...... el archivo se anexa como un arreglo de bytes (en VS, tengo entendido que tu trabajas en VFP así que depende de como se importa la especificación del WS), lo que sucede es que el WS está configurado con mtom y este lo transmite como si fuera un attachment, me imagino que como si fuera un stream."


Debo estudiar eso del MTOM y como se debe enviar :s

Saludos
  • 0

#29 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 21 marzo 2012 - 02:36

A simple vista me llama la atención que el "Content-Length" no es igual en ambos casos, por lo que me parece que el problema es que  no estas enviando lo mismo.  Tendrías que revisar eso antes de seguir dándole vueltas al curl
  • 0

#30 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 21 marzo 2012 - 03:00

A simple vista me llama la atención que el "Content-Length" no es igual en ambos casos, por lo que me parece que el problema es que  no estas enviando lo mismo.  Tendrías que revisar eso antes de seguir dándole vueltas al curl


Ya lo había notado, pero he comparado ambos XML y no veo diferencia, de todos modos lo haré de nuevo, espero que sea por ahí :)

Saludos
  • 0

#31 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 21 marzo 2012 - 04:44


A simple vista me llama la atención que el "Content-Length" no es igual en ambos casos, por lo que me parece que el problema es que  no estas enviando lo mismo.  Tendrías que revisar eso antes de seguir dándole vueltas al curl


Ya lo había notado, pero he comparado ambos XML y no veo diferencia, de todos modos lo haré de nuevo, espero que sea por ahí :)

Saludos


Comprueba el final de las lineas, puede que ellos estén usando solo LF (#10) y tu estés usando LF+CR (#10#13) y así te de mas tamaño.

O puede que si tu versión de delphi es actual utilice unicode para los TStringList, y estés mandando caracteres unicode (o utf-8) en vez de Ansi.

La diferencia de tamaño podría explicar el problema. Si el servidor esta esperando un tamaño determinado y recibe menos, se queda esperando sin enviar la respuesta.
  • 0

#32 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 21 marzo 2012 - 04:59

Ok, lo estoy revisando, ya me tiene al borde de la locura :s

Saludos
  • 0

#33 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 23 marzo 2012 - 11:34

¡Hola!
Yo de esto estoy en -minExtended  :p

Pero de lo que puedo leer entre las comparación de SOAP y CURL, además del tamaño, es que en Accept-Encoding CURL  tiene otro valor adicional:

Accept-Encoding: gzip,deflate,identity

¿Es posible que esto también esté metiendo dedo en los problemas?

Saludos,
  • 0

#34 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 23 marzo 2012 - 11:39

¡Hola!
Yo de esto estoy en -minExtended  :p

Pero de lo que puedo leer entre las comparación de SOAP y CURL, además del tamaño, es que en Accept-Encoding CURL  tiene otro valor adicional:

Accept-Encoding: gzip,deflate,identity

¿Es posible que esto también esté metiendo dedo en los problemas?

Saludos,


El valor identity también se lo he quitado con el mismo resultado. Y sigo con el problema, aunque no he hecho más por eso ya que ahora mismo me han cambiado (sin avisar) el formato del XML de otro proyecto y necesito resolverlo ya que está en producción :s

Saludos
  • 0

#35 anibalbg

anibalbg

    Newbie

  • Miembros
  • Pip
  • 4 mensajes

Escrito 03 julio 2013 - 02:23


¿Puedes poner algo de código?




delphi
  1. function TDigital.EnviarPost(Url, Post: AnsiString; out Reply: TStrings): Boolean;
  2.  
  3.       //***********************************************************************************
  4.       function ReadFromStream(Buffer: PAnsiChar; Size, Count: Integer;
  5.         Stream: TStream): Integer; cdecl;
  6.       begin
  7.         Result:= Stream.Read(Buffer^,Size*Count) div Size;
  8.       end;
  9.  
  10.       function SaveToStream(Buffer: PAnsiChar; Size, Count: Integer;
  11.         Stream: TStream): Integer; cdecl;
  12.       begin
  13.         Result:= Stream.Write(Buffer^,Size*Count) div Size;
  14.       end;
  15.  
  16.       function MemoryStreamToString(M:TMemoryStream): AnsiString;
  17.       begin
  18.         SetString(Result, PChar(M.Memory), M.Size);
  19.       end;
  20.       //***********************************************************************************
  21.  
  22.       procedure ErrorCurl(const mensaje: string);
  23.       begin
  24.         raise Exception.Create(mensaje);
  25.         exit;
  26.       end;
  27.  
  28. begin
  29.   Result:= false;
  30.   Curl:= curl_easy_init;
  31.   if Curl <> nil then
  32.   try
  33.     if curl_easy_setopt(Curl, CURLOPT_VERBOSE, TRUE) <> CURLE_OK then
  34.       ErrorCurl('No se pudo asignar CURLOPT_VERBOSE.');
  35.     if curl_easy_setopt(Curl, CURLOPT_USE_SSL, CURLUSESSL_ALL) <> CURLE_OK then
  36.       ErrorCurl('No se pudo asignar CURLOPT_USE_SSL.');
  37.     if curl_easy_setopt(Curl, CURLOPT_SSL_VERIFYPEER, FALSE) <> CURLE_OK then
  38.       ErrorCurl('No se pudo asignar CURLOPT_SSL_VERIFYPEER.');
  39.     if curl_easy_setopt(Curl, CURLOPT_URL, PAnsiChar(URL)) <> CURLE_OK then
  40.       ErrorCurl('No se pudo asignar CURLOPT_URL.');
  41.     if curl_easy_setopt(Curl, CURLOPT_POST, 1) <> CURLE_OK then
  42.       ErrorCurl('No se pudo asignar CURLOPT_POST.');
  43.     if curl_easy_setopt(Curl, CURLOPT_READFUNCTION, @ReadFromStream) <> CURLE_OK then
  44.       ErrorCurl('No se pudo asignar CURLOPT_READFUNCTION.');
  45.     if curl_easy_setopt(Curl, CURLOPT_WRITEFUNCTION, @SaveToStream) <> CURLE_OK then
  46.       ErrorCurl('No se pudo asignar CURLOPT_WRITEFUNCTION.');
  47.     if curl_easy_setopt(Curl, CURLOPT_WRITEFUNCTION, @SaveToStream) <> CURLE_OK then
  48.       ErrorCurl('No se pudo asignar CURLOPT_WRITEFUNCTION.');
  49.     if curl_easy_setopt(Curl, CURLOPT_CONNECTTIMEOUT, 30) <> CURLE_OK then
  50.       ErrorCurl('No se pudo asignar CURLOPT_CONNECTTIMEOUT.');
  51.     if curl_easy_setopt(Curl, CURLOPT_TIMEOUT, 180) <> CURLE_OK then
  52.       ErrorCurl('No se pudo asignar CURLOPT_TIMEOUT.');
  53.  
  54. //    if FproxyCurl.proxyIP <> '' then
  55. //    begin
  56. //      if curl_easy_setopt(Curl, CURLOPT_HTTPPROXYTUNNEL, 1) <> CURLE_OK then
  57. //        ErrorCurl('No se pudo asignar CURLOPT_HTTPPROXYTUNNEL.');
  58. //      if curl_easy_setopt(Curl, CURLOPT_PROXY, FproxyCurl.proxyIP + ':' + FproxyCurl.proxyPort ) <> CURLE_OK then
  59. //        ErrorCurl('No se pudo asignar CURLOPT_PROXY.');
  60. //
  61. //      if FproxyCurl.proxyUsr <> '' then
  62. //      begin
  63. //        if curl_easy_setopt(Curl, CURLOPT_PROXYUSERPWD, FproxyCurl.proxyUsr + ':' + FproxyCurl.proxyPwd ) <> CURLE_OK then
  64. //          ErrorCurl('No se pudo asignar CURLOPT_PROXYUSERPWD.');
  65. //      end;
  66. //    end;
  67.  
  68.     Stream    := TMemoryStream.Create;
  69.     StreamOut := TMemoryStream.Create;
  70.  
  71.     try
  72.       with TStringList.Create do
  73.       try
  74.         Add(Post);
  75.         SaveToStream(Stream);
  76.       finally
  77.         Free;
  78.       end;
  79.       Stream.Position:= 0;
  80.       if curl_easy_setopt(Curl, CURLOPT_INFILE, Stream) <> CURLE_OK then
  81.         ErrorCurl('No se pudo asignar CURLOPT_INFILE.');
  82.       if curl_easy_setopt(Curl, CURLOPT_POSTFIELDSIZE, Stream.Size) <> CURLE_OK then
  83.         ErrorCurl('No se pudo asignar CURLOPT_POSTFIELDSIZE.');
  84.       Header := nil;
  85.       Header := curl_slist_append(Header,PAnsiChar('Expect:'));
  86.       Header := curl_slist_append(Header,PAnsiChar('Content-Type: text/xml;charset=UTF-8'));
  87.       Header := curl_slist_append(Header,PAnsiChar('SOAPAction: "urn:'+FsoapAction+'"'));
  88.       Header := curl_slist_append(Header,PAnsiChar('Accept: text/xml'));
  89.       Header := curl_slist_append(Header,PAnsiChar('Accept-Encoding: gzip,deflate,identity'));
  90.       Header := curl_slist_append(Header,PAnsiChar('User-Agent: Jakarta Commons-HttpClient/3.1'));
  91.  
  92.       try
  93.         if curl_easy_setopt(Curl, CURLOPT_FILE, StreamOut) <> CURLE_OK then
  94.           ErrorCurl('No se pudo asignar CURLOPT_FILE.');
  95.         if curl_easy_setopt(Curl, CURLOPT_HTTPHEADER, Header) <> CURLE_OK then
  96.           ErrorCurl('No se pudo asignar CURLOPT_HTTPHEADER.');
  97.  
  98.         curlResult := curl_easy_perform(Curl);
  99.  
  100.  
  101.         if curlResult = CURLE_OK then
  102.         begin
  103.           Reply.Text := MemoryStreamToString(StreamOut);
  104.           curlError := '';
  105.           result := true;
  106.         end
  107.         else begin
  108.               curlError := curl_easy_strerror(curlResult);
  109.               Reply.Text := curlError;
  110.               result := false;
  111.         end;
  112.  
  113.       finally
  114.         curl_slist_free_all(Header);
  115.       end;
  116.     finally
  117.       Stream.Free;
  118.       StreamOut.Free;
  119.     end;
  120.   finally
  121.     curl_easy_cleanup(Curl);
  122.   end;
  123. end;



ésto es lo que hago amigo.

Le he quitado lo del proxy porque pensé que por ahí podía estar el problema.

Y solo tengo problema cuando el archivo enviado es muy grande

Saludos


el dato que le pasas en post que es la ruta del archivo a enviar y también curl_easy_strerror me dice que no esta declarado agarre y pegue la función en el ejemplo de enviar correo por gmail de seoane
  • 0

#36 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 03 julio 2013 - 03:50

el dato que le pasas en post que es la ruta del archivo a enviar y también curl_easy_strerror me dice que no esta declarado agarre y pegue la función en el ejemplo de enviar correo por gmail de seoane


Lo que se le pasa en la variable POST es el contenido del XML no la ruta del archivo.

En cuanto a la función curl_easy_strerror, ésta se encuentra declarada en la unidad ucurl que nuestro amigo seoane nos proporcionó.



delphi
  1. function curl_easy_strerror(code: CURLcode):pchar;
  2.   cdecl; external libcurl;



Saludos

  • 0

#37 anibalbg

anibalbg

    Newbie

  • Miembros
  • Pip
  • 4 mensajes

Escrito 03 julio 2013 - 05:19

ok gracias parece que voy avanzando, u detalle mas en la línea
Header := curl_slist_append(Header,PAnsiChar('SOAPAction: "urn:'+FsoapAction+'"'));
FsopaAction que es egostar
  • 0

#38 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 03 julio 2013 - 07:18

ok gracias parece que voy avanzando, u detalle mas en la línea
Header := curl_slist_append(Header,PAnsiChar('SOAPAction: "urn:'+FsoapAction+'"'));
FsopaAction que es egostar


Es el nombre del método que vas a consumir y que se incluye en el encabezado del SOAP.

Saludos
  • 0

#39 anibalbg

anibalbg

    Newbie

  • Miembros
  • Pip
  • 4 mensajes

Escrito 04 julio 2013 - 10:24

pues no egostar el curl me da un error CURLE_SSL_CONNECT_ERROR estoy verde para todo esto
  • 0

#40 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 04 julio 2013 - 09:46

pues no egostar el curl me da un error CURLE_SSL_CONNECT_ERROR estoy verde para todo esto


Hay que agregar la siguiente linea:



delphi
  1.     if curl_easy_setopt(Curl, CURLOPT_SSLVERSION, 3) <> CURLE_OK then
  2.       ErrorCurl('No se pudo asignar CURLOPT_SSLVERSION.');



Saludos
  • 0




IP.Board spam blocked by CleanTalk.