Android将数据发送到我的聊天服务器,被截断

时间:2012-10-19 20:19:37

标签: android android-5.0-lollipop

我正在尝试制作一个简单的聊天服务器。它在iphone上工作正常,但并不是所有的聊天都在android上进行。

我的想法是使用http协议,所以我可以使用iphone和android上的标准sfkd与我的服务器通信

我在android上使用URLConnection连接类。 当我在服务器上添加代码时,我注意到我得到了标头中发送的帖子数据的长度。我没有在URLConnection类上设置任何长度值。我想,因为我没有在标题中设置大小,这就是为什么它无法正常工作。我找不到任何关于此的信息。

在我的服务器上读取haeder的代码

我的服务器代码和Android代码如下,

public int ReadHeader()
     {
        // read in one line
         int PageId=0;

    //   try{
            request = new StringBuffer(1000);
            System.out.println("get connection reading in header \r");
            //InputStream in = new BufferedInputStream( connection.getInputStream() );
            StopFlag=false;

            String out;
            // the first line shouls have the page
            out=ReadLine();

            int p;
            p=out.lastIndexOf("stop");
            if (p!=-1)
                PageId=1;
            p=out.lastIndexOf("enter");
            if (p!=-1)
                PageId=2;
            p=out.lastIndexOf("add");
            if (p!=-1)
                PageId=3;
            p=out.lastIndexOf("exit");
            if (p!=-1)
                PageId=4;
            p=out.lastIndexOf("update");
            if (p!=-1)
                PageId=5;

            int MessageSize=0;
            do{
                out=ReadLine();

                // check for content size
                // GET SIZR OF DATA SENT

                if (out.contains("Length"))
                {
                    System.out.println("found length \r");
                    int pes=out.indexOf(' ');
                    String Length=out.substring(pes+1);
                    System.out.println("found size");
                    System.out.println(Length); 
                    //MessageSize=(int)Length;
                    MessageSize= Integer.parseInt( Length) ;
                                      //MessageSize=36;     
                }
            } while(out!="finish header" && out!="");

            System.out.println("finsih header \r"); 
            ClientMessage=ReadSize(MessageSize); 
            /*
         } catch(IOException ec)
            {
                System.out.println(ec.getMessage());    
            }
        */
       return PageId;
     }

// CODE ON ANDROID 
           String data = URLEncoder.encode("username", "UTF-8") + "=" + URLEncoder.encode( cGlobals.UserName, "UTF-8"); data += "&" + URLEncoder.encode("comment", "UTF-8") + "=" + URLEncoder.encode( s, "UTF-8");
                           cGlobals.Message=""; // THIS IS NOT TKING IN ANY INFO ABOUT THE LENGTH OF data                           URLConnection conn = url.openConnection();
                           // set timeouts to 5 seconds
           //              conn.setConnectTimeout(1000*5);
           //              conn.setReadTimeout(5*1000);
                           conn.setDoOutput(true);


                           OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());


                      wr.write(data);
                       wr.flush();
                       wr.close();

0 个答案:

没有答案