Je développe une application en utilisant J2ME pour envoyer les coordonnées GPS reçues au serveur et je suis nouveau client à développer application serveur.PWC1406: Servlet.service() a jeté exception java.io.IOException: en-tête de bloc non valide Lorsque le client envoie des données au serveur
Tout fonctionne correctement avec l'utilisation du Nokia N97mini ou E71. Mais quand je l'ai essayé sur HTC HD2, je reçois l'exception du serveur. J'utilise Netbeans 6.5.1 GlassFish V2 en tant que serveur. Je ne sais pas pourquoi cette erreur se produit uniquement sur le HTC HD2. Toute aide est la bienvenue. Merci ...
Voici le message d'erreur:
StandardWrapperValve[FindHospitalServlet]: PWC1406: Servlet.service() for servlet FindHospitalServlet threw exception
java.io.IOException: Invalid chunk header
at org.apache.coyote.http11.filters.ChunkedInputFilter.doRead(ChunkedInputFilter.java:171)
at org.apache.coyote.http11.InternalInputBuffer.doRead(InternalInputBuffer.java:719)
at org.apache.coyote.Request.doRead(Request.java:482)
at org.apache.coyote.tomcat5.InputBuffer.realReadBytes(InputBuffer.java:342)
at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:378)
at org.apache.coyote.tomcat5.InputBuffer.readByte(InputBuffer.java:351)
at org.apache.coyote.tomcat5.CoyoteInputStream.read(CoyoteInputStream.java:159)
at java.io.DataInputStream.readUnsignedShort(DataInputStream.java:320)
at java.io.DataInputStream.readUTF(DataInputStream.java:572)
at java.io.DataInputStream.readUTF(DataInputStream.java:547)
at myPackage.FindHospitalServlet.doPost(FindHospitalServlet.java:28)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:427)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:315)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:287)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:218)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:98)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:222)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1096)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:166)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1096)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:288)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:647)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:579)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:831)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)
at com.sun.enterprise.web.portunif.PortUnificationPipeline$PUTask.doTask(PortUnificationPipeline.java:380)
at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
est Ci-dessous le code que je l'ai écrit pour se connecter au serveur:
private void connectFindHospServlet()
{
String url = "http://172.22.190.13:8080/UpdateServlet/FindHospitalServlet";
StringBuffer sb = new StringBuffer();
String info = lat+"!"+lng+"!";
try
{
HttpConnection c = (HttpConnection) Connector.open(url);
c.setRequestProperty("User-Agent","Profile/MIDP-2.0, Configuration/CLDC-1.0");
c.setRequestProperty("Content-Language","en-US");
c.setRequestMethod(HttpConnection.POST);
DataOutputStream os = (DataOutputStream)c.openDataOutputStream();
os.writeUTF(info);
os.flush();
os.close();
// Get the response from the servlet page.
DataInputStream is =(DataInputStream)c.openDataInputStream();
int ch;
sb = new StringBuffer();
while ((ch = is.read()) != -1)
sb.append((char)ch);
is.close();
c.close();
if(sb.toString().charAt(0) == 'n')
{
formDisplayResultFindHosp();
display.setCurrent(formDisplayResultFindHosp);
}
else
{
PlannerMain pm = new PlannerMain();
hospInfo = pm.getFindHospInfo(sb.toString().substring(0, sb.length()-2));
formDisplayResultFindHosp(hospInfo);
display.setCurrent(formDisplayResultFindHosp);
}
}
catch (Exception e)
{
System.out.println("Error recieve find user");
}
}
Toute information nécessaire pour mieux aider à comprendre le problème, faites le moi savoir. Je vais essayer de fournir autant que possible.
Salut, Merci pour la réponse. Le paramètre requis pour c.setRequestProperty (String, String); donc je l'ai fait comme info.getBytes ("UTF-8"). Longueur renvoie int c.setRequestProperty ("Content-Length", "" + info.getBytes ("UTF-8"). Longueur) ; Je ne suis pas sûr si c'est la bonne façon de le faire. Mais de toute façon je reçois toujours le même message d'erreur. D'autres idées? – Nivek