Hi ! Now I know what is going on with this, was veeery simple, I was not URL encoding the URL I was requesting from my app.
So now is working fine! ==Oscar OM MANI PEME HUM On Thu, 2004-08-12 at 19:50, Oscar Medina Duarte wrote: > Hi all ! > > I'm not sure yet if I'm doing something wrong, but I think we may have a > bug on http implementation, but is hard to explain, so please be > patient. > > What am I doing? > I'm sending a sms request (MO) to a servlet, the servlet should reply > using the sendsms http interface, that is requesting a url like: > > http://localhost:8080/kannel_test/KannelTest?from=222140576&to=4378&keyWord=ll9f&scndWord=segunda&theRest=todo%20lo%20demas > > The related confs: > > group = smsbox > bearerbox-host = localhost > sendsms-port = 64235 > global-sender = 4378 > reply-couldnotfetch = "Contacta a soporte code 1" > reply-couldnotrepresent = "Contacta a soporte code 2" > reply-requestfailed = "Contacta a soporte code 3" > reply-emptymessage = "Contacta a soporte code 4" > > group = sms-service > keyword = default > post-url = > "http://localhost:8080/kannel_test/KannelTest?from=%p&to=%P&keyWord=%k&scndWord=%s&theRest=%r" > #accept-x-kannel-headers = true > max-messages = 0 > > > What is the problem? > The problem is that when my java app tries to get the URL, I get an > exception like: > > java.net.SocketException: Unexpected end of file from server > > in the JVM, and the debug on smsbox looks like: > > 2004-08-12 18:30:49 [13488] [2] DEBUG: HTTP: Creating HTTPClient for > `127.0.0.1'. > 2004-08-12 18:30:49 [13488] [1] DEBUG: HTTP: Destroying HTTPClient area > 0x941f2c8. > 2004-08-12 18:30:49 [13488] [1] DEBUG: HTTP: Destroying HTTPClient for > `127.0.0.1'. > 2004-08-12 18:30:49 [13488] [2] DEBUG: HTTP: Creating HTTPClient for > `127.0.0.1'. > 2004-08-12 18:30:49 [13488] [1] DEBUG: HTTP: Destroying HTTPClient area > 0x941f2c8. > 2004-08-12 18:30:49 [13488] [1] DEBUG: HTTP: Destroying HTTPClient for > `127.0.0.1'. > > Ok, that looks like a problem at my java app, so I tried connecting to > another url with my app with no problem, thats why I partially discarded > that possibility. > > The next thing that may had gone wrong was the URL creation, so I tried > with Mozilla using the url generated by my app, and it worked fine. > > So, I decided to sniff and compare 3 tests: > > 1.- My App connecting to www.google.com : > > My app sent this: > > GET / HTTP/1.1 > User-Agent: Java/1.4.2_03 > Host: www.google.com > Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 > Connection: keep-alive > > and received this from google: > > HTTP/1.1 302 Found > Location: > http://www.google.com.mx/cxfer?c=PREF%3D:TM%3D1092355048:S%3DKFxs1Ocs1_d6SPlR > Set-Cookie: > PREF=ID=7296c503648eed6e:CR=1:TM=1092355048:LM=1092355048:S=_Z4iNjWgx73z9Dz1; > expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com > Content-Type: text/html > Server: GWS/2.1 > Content-Length: 207 > Date: Thu, 12 Aug 2004 23:57:28 GMT > > <HTML><HEAD><TITLE>302 Moved</TITLE></HEAD><BODY> > <H1>302 Moved</H1> > The document has moved > <A > HREF="http://www.google.com.mx/cxfer?c=PREF%3D:TM%3D1092355048:S%3DKFxs1Ocs1_d6SPlR">here</A>. > </BODY></HTML> > > No exceptions thrown, and sniffing seems quite ok to me. > > 2.- Mozilla connecting to the URL created by my app: > > Mozila said: > > GET > /cgi-bin/sendsms?username=xxx&password=xxx&to=2221401576&from=4378&text=mensaje > HTTP/1.1 > Host: localhost:64235 > User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4.1) > Gecko/20031030 > Accept: > text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1 > Accept-Language: en-us,en;q=0.5 > Accept-Encoding: gzip,deflate > Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 > Keep-Alive: 300 > Connection: keep-alive > > > Kannel responded: > > HTTP/1.1 202 Accepted > Server: Kannel/cvs-20040812 > Content-Length: 5 > Content-type: text/html > Pragma: no-cache > Cache-Control: no-cache > > Sent. > > And everything worked smoothly. > > > 3.- My App sending via Kannel : > > My app said: > > GET > /cgi-bin/sendsms?username=xxx&password=xxx&to=2221401576&from=4378&text=mensaje via > http request HTTP/1.1 > User-Agent: Java/1.4.2_03 > Host: localhost:64235 > Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 > Connection: keep-alive > > > > And Kannel had nothing to say... Exception was thrown and the problem I > explained before. > > Flags at TCP level : > > myApp [SYN] > Kannel [SYN, ACK] > > myApp [ACK] > myApp [PSH, ACK] Here goes the HTTP request > > { > Kannel [ACK] > Kannel [FIN, ACK] > > instead of: > Kannel [ACK] > Kannel [PSH, ACK] HTTP response from kannel > > } > ... > > > I'm not very http literate, but I see no reason for kannel to reject my > connection from my java app, there are some obvious differences from the > Mozilla version of the request to java's request, but, should that be an > issue for Kannel? > > BTW: the piece of code I'm connecting with at my java app is : > > ... some code ... > // At this point sb.toString returns the full URL to connect to > url = new URL(sb.toString()); > > // The exception is thrown at this line, at the URL.openStream() method. > br = new BufferedReader(new InputStreamReader(url.openStream())); > ... some code ... > > Thanks for the patience on reading this looong e-mail, and please tell > me what do you think about it, or if someone know a better way of doing > that in java, I will appreciate it!! > > P.S. also tell me if I'm missing some info to post. > > == Oscar > OM MANI PEME HUM > > >
