Am 05.09.2016 um 14:49 schrieb Tim Watts:
> On Mon, 2016-09-05 at 14:11 +0200, Klemens Muthmann wrote:
>> Hi,
>>
>> I currently need to implement an HTTP data transmission from an Arduino
>> with WiFi module to a PC running a Tomcat 8.5.4 instance. The Tomcat is
>> running under Ubuntu 16.04.
>>
>> The problem is that, since there are no HTTP libraries on Arduino, I
>> need to write the correct HTTP request myself and I got stuck. It would
>> be great if someone on the list with a deeper understanding of the HTTP
>> protocol would be willing to support me.
>> The transmitted (possibly erroneous ) request looks like:
>>
>> ========================================
>> GET /push?VIN=testrun HTTP/1.1
>> User-Agent: Freematics
>> Connection: keep-alive
>> Host:
>>
>> ========================================
>> The server runs under a local access point IP (10.42.0.1) and receives
>> that request correctly but throws me an EOFException from the following
>> code fragment:
>>
>>      nRead = channel.read(socketBufferHandler.getReadBuffer());
>>     if (nRead == -1) {
>>         throw new EOFException();
>>     }
>>
>> So it seems to me that an end of file is reached before it is expected.
>> Can somebody provide me with hints on how to solve that issue and
>> formulate a correct HTTP request to my Tomcat instance?
>>
>> The following is th log trace I receive from the server:
>> ========================================
>> 2016-09-05 13:32:50.238 DEBUG 13143 --- [nio-8080-exec-1]
>> o.a.coyote.http11.Http11InputBuffer      : Received [GET
>> /push?VIN=testrun HTTP/1.1
>> User-Agent: Freematics
>> Connection: keep-alive
>> Host:
>>
>> ]
> Until a real expert comes along with a better answer let me just toss
> this out:  Are the lines in the HTTP request that the Arduino submits
> terminated with \r\n (and not just \n)?  Because it looks like the
> entire request may have been read when reading the request line.  Then
> when it goes to read the headers it gets an EOF.  Not 100% sure of this
> but it's possible.
>
>
>> 2016-09-05 13:32:50.238 DEBUG 13143 --- [nio-8080-exec-1]
>> o.a.c.authenticator.AuthenticatorBase    : Security checking request GET
>> /push
>> 2016-09-05 13:32:50.238 DEBUG 13143 --- [nio-8080-exec-1]
>> org.apache.catalina.realm.RealmBase      :   No applicable constraints
>> defined
>> 2016-09-05 13:32:50.238 DEBUG 13143 --- [nio-8080-exec-1]
>> o.a.c.authenticator.AuthenticatorBase    :  Not subject to any constraint
>> 2016-09-05 13:32:50.238 DEBUG 13143 --- [nio-8080-exec-1]
>> org.apache.tomcat.util.http.Parameters   : Set encoding to UTF-8
>> 2016-09-05 13:32:50.238 DEBUG 13143 --- [nio-8080-exec-1]
>> org.apache.tomcat.util.http.Parameters   : Decoding query null UTF-8
>> 2016-09-05 13:32:50.238 DEBUG 13143 --- [nio-8080-exec-1]
>> org.apache.tomcat.util.http.Parameters   : Start processing with input
>> [VIN=testrun]
>> 2016-09-05 13:32:50.238 DEBUG 13143 --- [nio-8080-exec-1]
>> o.s.b.w.f.OrderedRequestContextFilter    : Bound request context to
>> thread: org.apache.catalina.connector.RequestFacade@75c83bc4
>> 2016-09-05 13:32:50.238 DEBUG 13143 --- [nio-8080-exec-1]
>> o.s.web.servlet.DispatcherServlet        : DispatcherServlet with name
>> 'dispatcherServlet' processing GET request for [/push]
>> 2016-09-05 13:32:50.238 DEBUG 13143 --- [nio-8080-exec-1]
>> s.w.s.m.m.a.RequestMappingHandlerMapping : Looking up handler method for
>> path /push
>> 2016-09-05 13:32:50.238 DEBUG 13143 --- [nio-8080-exec-1]
>> s.w.s.m.m.a.RequestMappingHandlerMapping : Returning handler method
>> [public void de.cyface.obd2.controller.Obd2Controller.push()]
>> 2016-09-05 13:32:50.238 DEBUG 13143 --- [nio-8080-exec-1]
>> o.s.b.f.s.DefaultListableBeanFactory     : Returning cached instance of
>> singleton bean 'obd2Controller'
>> 2016-09-05 13:32:50.238 DEBUG 13143 --- [nio-8080-exec-1]
>> o.s.web.servlet.DispatcherServlet        : Last-Modified value for
>> [/push] is: -1
>> push
>> 2016-09-05 13:32:50.239 DEBUG 13143 --- [nio-8080-exec-1]
>> o.s.web.servlet.DispatcherServlet        : Null ModelAndView returned to
>> DispatcherServlet with name 'dispatcherServlet': assuming HandlerAdapter
>> completed request handling
>> 2016-09-05 13:32:50.239 DEBUG 13143 --- [nio-8080-exec-1]
>> o.s.web.servlet.DispatcherServlet        : Successfully completed request
>> 2016-09-05 13:32:50.239 DEBUG 13143 --- [nio-8080-exec-1]
>> o.s.b.w.f.OrderedRequestContextFilter    : Cleared thread-bound request
>> context: org.apache.catalina.connector.RequestFacade@75c83bc4
>> 2016-09-05 13:32:50.239 DEBUG 13143 --- [nio-8080-exec-1]
>> o.apache.coyote.http11.Http11Processor   : Socket:
>> [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@2940dec1:org.apache.tomcat.util.net.NioChannel@34a92297:java.nio.channels.SocketChannel[connected
>> local=/10.42.0.1:8080 remote=/10.42.0.72:46701]], Status in:
>> [OPEN_READ], State out: [OPEN]
>> 2016-09-05 13:32:55.280 DEBUG 13143 --- [nio-8080-exec-2]
>> o.apache.coyote.http11.Http11Processor   : Error parsing HTTP request header
>>
>> java.io.EOFException: null
>>     at
>> org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1222)
>> ~[tomcat-embed-core-8.5.4.jar:8.5.4]
>>     at
>> org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1163)
>> ~[tomcat-embed-core-8.5.4.jar:8.5.4]
>>     at
>> org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:742)
>> ~[tomcat-embed-core-8.5.4.jar:8.5.4]
>>     at
>> org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:404)
>> ~[tomcat-embed-core-8.5.4.jar:8.5.4]
>>     at
>> org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:994)
>> ~[tomcat-embed-core-8.5.4.jar:8.5.4]
>>     at
>> org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
>> [tomcat-embed-core-8.5.4.jar:8.5.4]
>>     at
>> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:785)
>> [tomcat-embed-core-8.5.4.jar:8.5.4]
>>     at
>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1425)
>> [tomcat-embed-core-8.5.4.jar:8.5.4]
>>     at
>> org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
>> [tomcat-embed-core-8.5.4.jar:8.5.4]
>>     at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>> [na:1.8.0_91]
>>     at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>> [na:1.8.0_91]
>>     at
>> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
>> [tomcat-embed-core-8.5.4.jar:8.5.4]
>>     at java.lang.Thread.run(Thread.java:745) [na:1.8.0_91]
>> =======================================
>>
>> Thanks and regards
>>     Klemens
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
>
Hi,

Thanks for the answer.

The request is formatted on the Arduino like:
"GET /push?VIN=testrun HTTP/1.1\r\nUser-Agent: Freematics\r\nConnection:
keep-alive\r\nHost: \r\n"

So yes, all lines are terminated with \r\n

Regards
    Klemens

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to