[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: HTTPAPI Errors and proxies
Title: Message
Brian,
I had
a go at this some time ago & failed miserably but your solution looks very
promising.
I
noticed that some proxies also require other credentials such as password (&
possibly others - I don't know if there is a standard)
Any
idea of how to negotiate with password etc ?
Regards
Ian Patterson
Hello Scott
etc.
I have done some work on
getting through our proxy, although I'm not sure the changes are good enough
to implement into the open source as they stand. I'm not used to writing code
for this kind of development.
This
is what I did. Feel free to slap my wrists. There may be enough information
for someone to get it going and implement the code better in to the product.
This code gets through our proxy though.
Created a new HTTPPROXYH Header Source file
member.
DHTTP_PROXYNAME
S 256A
D
INZ('YOUR.PROXY.HERE.COM')
DHTTP_PROXYPORT S
4A
D
INZ('8080')
DProxy_Name S
256A
D
DProxy_Port S
4A
D
D @proxy s
1N
inz(*on)
D @noproxy
s 1N
inz(*off)
*********************************************************************
* http_Proxy(): Set Proxy
server
*
* UseProxy = (input) (either *ON=Yes or
*OFF=No)
*
* pxName =
(Input/Output) Current Proxy Name
*
pxPort = (Input/Output) Current Proxy Port
D http_proxy PR
10i 0
D UseProxy
1N const
D pxName
256A
varying const options(*nopass)
D pxName
256A varying const options(*nopass)
D pxPort
4A varying
const options(*nopass)
Created a new HTTPPROXY module.
*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
* http_Proxy():
Set the Proxy server Name
*
* UseProxy = (input)
(either *ON=Yes or *OFF=No)
*
*
pxName = (Input/Output) Current Proxy Name
* pxPort =
(Input/Output) Current Proxy Port
*
*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
P http_proxy
B export
D http_proxy
PI 10I 0
D UseProxy
1N const
D pxName
256A varying const options(*nopass)
D pxPort
4A varying const options(*nopass)
D wkProxy S
1N
c
eval
wkProxy = UseProxy
c if
wkProxy
c
if %parms >=
2
c
eval
proxy_name = pxName
c else
c
eval
proxy_name = HTTP_PROXYNAME
c
endif
c
if %parms >=
3
c
eval
Proxy_Port = pxPort
c else
c
eval
Proxy_Port = HTTP_PROXYPORT
c
endif
c
else
c
eval Proxy_Name =
*blanks
c
eval Proxy_Port
= *blanks
c
endif
c
return 0
P
E
So far so good, but now it
probably gets a bit dangerous . . .
Then I added some code to the delivered HTTPAPIR4
After
/copy LIBHTTP/QRPGLESRC,COMM_H
I added
/copy LIBHTTP/QRPGLESRC,HTTPPROXYH.
Changed the http_persist_open procedure.
(Inserted lines in
italics )
*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
* http_persist_open(): Open a
persistent HTTP session
*
* peURL
= url to connect to
* peTimeout =
(optional) give up if no data is received for
*
this many seconds.
*
* Returns *NULL upon
failure, or
*
pointer to HTTP communication session
*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
P http_persist_open...
P
B
export
D http_persist_open...
D PI
*
D peURL
32767A
varying const options(*varsize)
D peTimeout
10I 0 value options(*nopass)
D wwTimeout
S 10I 0
D wwServ
S
32A
D wwUser S
32A
D wwPass
S 32A
D wwHost S
256A
D wwPort
S 10I 0
D wwPath S
32767A varying
D wwComm s
*
D p_addr
s
*
c
callp debug_msg('http_persist_open():'
c
+ ' entered')
*******************f*************************************
* Set up optional parameters (timeout)
*********************************************************
c if
%parms>=2 and peTimeout>=0
c eval
wwTimeout = peTimeout
c else
c
eval wwTimeout =
HTTP_TIMEOUT
c
endif
*********************************************************
* Parse URL into it's components
*********************************************************
c if
http_long_ParseURL(peURL: wwServ: wwUser:
c
wwPass: wwHost: wwPort: wwPath) < 0
c
return *NULL
c
endif
*********************************************************
* Select comm driver & build a socket address structure
*********************************************************
* Now change the host to a proxy if we need to use one,
* and change the pathname back to the full
URL
c
if
Proxy_Name <> *blanks
c
eval wwHost = Proxy_Name
c
eval wwPath = %trim(peURL)
c
endif
c
if Proxy_Port
<> *BLANKS
c
eval wwPORT =
atoi(%trimr(Proxy_Port))
c
endif
*
c
eval wwComm = http_select_commdriver(wwServ)
c
if wwComm
= *NULL
c
return *NULL
c
endif
c
eval p_addr = comm_resolve( wwComm
c
:
%trimr(wwHost)
c
: %trimr(wwServ)
c
: wwPort
c
: *OFF
)
c
if
p_addr = *NULL
c
return *NULL
c
endif
*********************************************************
* Connect to server
*********************************************************
c
if
comm_Connect( wwComm
c
: p_addr
c
: wwTimeout
c
) = *OFF
c
return *NULL
c
endif
c
return wwComm
P
E
Then I added (not sure why I did this, but it looks like I just
embedded the source instead of using the external module for HTTPPROXY.
/copy LIBHTTP/QRPGLESRC,httpproxy
before the line
/define ERRNO_LOAD_PROCEDURE
I changed the qsrvsrc member
httpapi2 to include the line
EXPORT SYMBOL(HTTP_PROXY)
I
compiled the module HTTPPROXY and recompiled the service program
HTTPAPIR4.
Finally, whenever
you want to use go through a proxy server add a line such as this before you
start the serious stuff.
rc = http_proxy(@proxy);
or
rc =
http_proxy(@proxy : myproxy: myport);
If you don't want to use a proxy, do nothing or
rc = Http_proxy(@noproxy)
Brian Doherty
CDTV-L -
Senior Analyst
Handelsbanken London
___________________________________
----- Forwarded by Brian Doherty/BRDO01/SHB on 26/04/2006
16:21 -----
PrithivirajDamodaran
<gdraj82@xxxxxxxxx> Sent by: owner-ftpapi@xxxxxxxxxxxxx
25/04/2006 20:42
Please respond
to ftpapi@xxxxxxxxxxxxx |
|
To
| ftpapi@xxxxxxxxxxxxx
|
cc
|
|
Subject
| Re: HTTPAPI
Errors |
|
Scott,
Like I
said I am not changing the example program that you gave. So the URL spelling
should not be issue. But DNS , whats that ,should that be configured in my
iSeries
if so how and where should I do it. Please
assist.
Thanks,
Prithiviraj.D
Scott Klement
<sk@xxxxxxxxxxxxxxxx> wrote:
Sender:
Scott Klement
> I downloaded , installed and tried the examples of
HTTPAPI. When I Ran
> EXAMPLE18 , the HTTP_URL_POST_XML Returns(-1)
stating "Host not found"
> I have my HTTP server ADMIN instances
running. what can be the issue ?
It's attempting to do a DNS lookup for
the host name that you provided in
your URL. It's not able to find the
host.
Is DNS configured properly on your system?
Have you
double-checked that you spelled the host name correctly in the
URL?
This has nothing whatsoever to do with your iSeries HTTP
server or it's
admin instance. There's absolutely no relationship between
those and
HTTPAPI.
> Input: Our AS400 is connected to a LAN
and the LAN is inside a firewall
> and we have a proxy server and port
configured for getting to internet,
> will it impact. If so what should
I do to get this fixed.
I know that there are people who have worked on
proxy support in the past,
but as far as I know, nobody has implemented
it. For certain, nobody has
contributed changes back to the project to
allow proxy support.
So, at least for the time being, HTTPAPI doesn't
work with proxies. You
need a direct internet connection, or you'll need
to modify HTTPAPI to
make it
work.
-----------------------------------------------------------------------
This
is the FTPAPI mailing list. To unsubsribe from the list send mail
to
majordomo@xxxxxxxxxxxxx with the body: unsubscribe ftpapi
mymailaddr
-----------------------------------------------------------------------
Celebrate Earth Day everyday! Discover 10 things you can do to
help slow climate change. Yahoo! Earth Day