J2ME HttpConnection на моторолу i290 - PullRequest
0 голосов
/ 20 марта 2012

у меня следующая проблема. Этот мидлет работает нормально, когда я выполняю его в эмуляторе, но когда я загружаю его на свой Motorola i290 (с компанией Nextel), и я запускаю его, он зависает. Так что никогда не запускается (программа начинает делать запрос на страницу php)

Вот код, если кто-нибудь знает, почему моя программа работает нормально в эмуляторе Wireless Toolkit, а не в телефоне, пожалуйста, дайте мне знать. Спасибо

Это мой метод "Соединения"

String getGrade(String url) throws IOException {
    HttpConnection c = null;
    InputStream is = null;
    OutputStream os = null;
    StringBuffer b = new StringBuffer();
    TextBox t = null;
    int x = 5, y =7;
    try {
      c = (HttpConnection)Connector.open(url,Connector.READ,true);
      c.setRequestMethod(HttpConnection.GET);
      c.setRequestProperty("IF-Modified-Since", "10 Nov 2000 17:29:12 GMT");
      c.setRequestProperty("User-Agent","Profile/MIDP-2.0 Confirguration/CLDC-1.1");
      c.setRequestProperty("Content-Language", "en-CA");
      os = c.openOutputStream();
      is = c.openDataInputStream();
      int ch;
      while ((ch = is.read()) != -1) {
        b.append((char) ch);
        System.out.println((char)ch);
      }
      t = new TextBox("Final Grades", b.toString(), 1024, 0);
    } finally {
       if(is!= null) {
          is.close();
       }
       if(os != null) {
          os.close();
       }
       if(c != null) {
          c.close();
       }
    }
    //display.setCurrent(t);
    return b.toString();
}     

1 Ответ

1 голос
/ 20 марта 2012

У меня была такая же проблема с Sony Ericsson, и я обнаружил, что URL-адрес иногда усекается, когда он слишком длинный.Попробуйте использовать POST вместо

            c = (HttpConnection) Connector.open(serverURL, 3);

            c.setRequestProperty("IF-Modified-Since", "20 Jan 2001 16:19:14 GMT");
            c.setRequestProperty("User-Agent", "Profile/MIDP-1.0 Configuration/CLDC-1.0");
            c.setRequestProperty("Content-Language", "en-US");
            c.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            c.setRequestProperty("Content-Length", packet.getSentLength());
            c.setRequestProperty("Cache-Control", "no-store no-cache");
            c.setRequestProperty("Pragma", "no-cache");
            c.setRequestMethod(HttpConnection.POST);
            c.setRequestProperty("Content-Length", packet.getSentLength());

            out = c.openOutputStream();

            if (out != null) {
                out.write(packet.getSentBytes());
            }


            is = c.openInputStream();
            hcCode = c.getResponseCode();

Это сработало для меня ..... Примечание. Измените package на соответствующую информацию

...