I changed the program to point to a different resource and received a different and perhaps more telling error.
--------debug.txt----------------
HTTPAPI Ver 1.25beta2 released 2012-03-06
OS/400 Ver V7R1M0
...
Server: Microsoft-IIS/8.0
Set-Cookie: ASPSESSIONIDQQDQTSTB=BBHBLEDBFOAJNDJMNGPBIJPJ; path=/
X-Powered-By: ASP.NET
Date: Tue, 01 Jul 2014 16:12:24 GMT
2014-07-01-11.12.28.337000 SetError() #13: HTTP/1.1 200 OK
2014-07-01-11.12.28.337000 recvresp(): end with 200
2014-07-01-11.12.28.337000 recvdoc parms: identity 7058
2014-07-01-11.12.28.338000 header_load_cookies() entered
2014-07-01-11.12.28.338000 cookie_parse() entered
2014-07-01-11.12.28.338000 cookie = ASPSESSIONIDQQDQTSTB=BBHBLEDBFOAJNDJMNGPBIJPJ; path=/
2014-07-01-11.12.28.339000 cookie attr ASPSESSIONIDQQDQTSTB=BBHBLEDBFOAJNDJMNGPBIJPJ
2014-07-01-11.12.28.339000 cookie attr path=/
2014-07-01-11.12.28.339000 recvdoc(): entered
2014-07-01-11.12.28.339000 SetError() #0:
2014-07-01-11.13.28.369000 SetError() #43: CommTCP_read: time-out!
2014-07-01-11.13.30.499000 http_close(): entered
It appears that HTTPAPI went back for more data for some reason as recvdoc was entered after parsing the header. I see that in Hannes's debug as well although his ended with a #0.
-----Original Message-----
From: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx [mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Hannes Rosner
Sent: Tuesday, July 01, 2014 10:14 AM
To: 'HTTPAPI and FTPAPI Projects'
Subject: AW: Perform a "HEAD" operation
I have made the suggested changes and added a "SaveProc" to the http_persist_call.
But the result is the same, I will get a "rc= -1" from the
http_persist_req() call and not the expected "200".
Hannes
=============== Debug file ==================
***************Datenanfang*****************
HTTPAPI Ver 1.24 released 2012-01-23
OS/400 Ver V5R4M0
New iconv() objects set, PostRem=819. PostLoc=0. ProtRem=819. ProtLoc=0
http_persist_open(): entered
http_long_ParseURL(): entered
DNS resolver retrans: 2
DNS resolver retry : 2
DNS resolver options: x'00000136'
DNS default domain: X****X.AT
DNS server found: 10.1.2.11
DNS server found: 10.1.2.196
http_persist_req(HEAD) entered.
http_long_ParseURL(): entered
do_oper(HEAD): entered
There are 0 cookies in the cache
HEAD /img/logo.png HTTP/1.1
Host: www.wikipedia.de
Host: www.wikipedia.de
User-Agent: http-api/1.24
recvresp(): entered
HTTP/1.1 200 OK
Server: nginx/0.7.67
Date: Tue, 01 Jul 2014 14:49:48 GMT
Content-Type: image/png
Content-Length: 11518
Last-Modified: Fri, 27 Jul 2012 10:31:32 GMT
Connection: keep-alive
Accept-Ranges: bytes
SetError() #13: HTTP/1.1 200 OK
recvresp(): end with 200
recvdoc parms: identity 11518
header_load_cookies() entered
header_load_cookies() entered
recvdoc(): entered
SetError() #0:
http_close(): entered
***************Datenende*******************
==================== Program =======================
h DftActGrp( *NO ) ActGrp('TEST')
h BndDir('LIBHTTP/HTTPAPI')
h Option( *NoDebugIO :*SrcStmt :*SecLvl )
d Main pr ExtPgm('TEST17R')
d Main pi
/Copy LIBHTTP/QRPGLESRC,HttpApi_h Routines for working with
Headers & Cookies
/Copy LIBHTTP/QRPGLESRC,IFSio_h Integrated File System API
Header File
d RcvData pr 10i 0
d peFD 10i 0 Value
d peData * Value
d peLength 10i 0 Value
d PsDs sds Qualified NoOpt
d ProcName *PROC
d msg s 52a Inz
d URL s 300a Inz Varying
d IFS s 256a Inz Varying
d wwComm s *
d fd s 10i 0 Inz
d rc s 10i 0 Inz
d ErrNo s 10i 0 Inz
d header s 32500a Inz Varying
/Free
*INLR = *ON;
http_debug(*ON :'/tmp/httpapi_debug.' +%Trim(psds.ProcName) + '.txt');
// IFS = http_tempfile();
// fd = open(IFS: O_WRONLY + O_TRUNC + O_CREAT + O_CCSID: 511:1208);
URL = 'http://www.wikipedia.de/img/logo.png';
wwComm = http_persist_open( URL );
If ( wwComm = *NULL );
http_crash();
EndIF;
rc = http_persist_req('HEAD' // Method Type: 10a
: wwComm // HTTP Comm Session Type:*
: URL // URL Type: a
: 0 // Upload fd Type: 10i 0
: *NULL // Upload Proc Type: *
: *NULL // Upload Data Type: *
: 0 // Upload Data length Type: 10i 0
: 0 // Save fd Type: 10i 0
: %Paddr( RcvData ) // Save Proc Type: *
);
If ( rc <> 0 );
Dsply ( 'rc= ' + %Char( rc ));
msg = http_error( ErrNo );
Dsply ( 'ErrNo= ' + %Char( ErrNo ));
Dsply ( msg );
EndIF;
http_persist_close( wwComm );
Return;
/End-Free
p RcvData b
d RcvData pi 10i 0
d peFD 10i 0 Value
d peData * Value
d peLength 10i 0 Value
/Free
Return peLength;
/End-Free
p RcvData e
******************Datenende ***********************************************
===========================================
-----------------------------------------------------------------------
This is the FTPAPI mailing list. To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------