Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Клиент - Сервер, нужна помощь 
V
    Опции темы
Samuil
Дата 18.9.2007, 09:54 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


в(Job)ываю
**


Профиль
Группа: Участник
Сообщений: 705
Регистрация: 26.4.2006
Где: Uzbekistan.Tashke nt

Репутация: 5
Всего: 6



Привет Всем программерам! smile 
Возникла проблемма :(  Надо организовать приложение которое будет посылать запрос сервлету и получать ответ.
Запрос вроде посылает , но вот ответ не получает. Не знаю что делать smile  .

Вот код сервлета:
Код

import java.io.*;

import javax.servlet.*;
import javax.servlet.http.*;

public class Post extends HttpServlet {
      private void getPhoto(DataInputStream din,
           DataOutputStream dout) throws Exception {

  dout.writeUTF("only text");
  dout.writeUTF("Text");
}


    public void doPost(HttpServletRequest request, HttpServletResponse response) throws
            ServletException, IOException {

        
        try {
    InputStream in = request.getInputStream();
    OutputStream out = response.getOutputStream();
    DataInputStream din = new DataInputStream(in);
    DataOutputStream dout = new DataOutputStream(out);

    int opcode = din.readInt();
    if (opcode == 1) {
        getPhoto(din,dout);
    }else {
      throw new Exception("wrong op code");
    }
    din.close();
    dout.close();
    in.close();
    out.close();

  } catch (Exception e) {
    e.printStackTrace();
  }
  }
}



А вот мидлета:

Код

import java.io.*;
import javax.microedition.io.*;
import javax.microedition.midlet.*;

public class Client extends MIDlet {

  protected void startApp() {
    make();
  }

  protected void updateWaitStatus() {}
  

  public void make() {
    DataInputStream din = null;
    HttpConnection conn = null;
    DataOutputStream dout = null;
    String title = "Error";
    String description = "Error";

    try {
       
      conn = (HttpConnection) Connector.open(
          "http://localhost:8080/WebModule/query");
      conn.setRequestMethod(HttpConnection.POST);

      dout = conn.openDataOutputStream();
      dout.writeInt(1);
      System.out.println("Write complete");
      dout.flush();
      dout.close();
      updateWaitStatus();
      
      conn.setRequestMethod(HttpConnection.GET);
      
      din = conn.openDataInputStream();
      title = din.readUTF().toString();
      updateWaitStatus();
      description = din.readUTF();
      updateWaitStatus();
      
      System.out.println("title: " + title);
      System.out.println("description: " + description);

    } catch (Exception exp) {
      exp.printStackTrace();

    } finally {
      try {
        if (dout != null) {
          dout.close();
        }
        if (din != null) {
          din.close();
        }
        if (conn != null) {
          conn.close();
        }
      } catch (Exception exp) {}
    }
  }

  protected void pauseApp() {}

  protected void destroyApp(boolean _boolean) {}

}


В написании сервлетов я не силен, начал их юзать 3 дня назад.
Заранее всем Спасибо smile 


--------------------
Выбор уже сделан, остается его только осознать   
smile    smile 
      smile  

user posted image
PM MAIL ICQ   Вверх
javastic
Дата 18.9.2007, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 19
Всего: 27



Гуглить не забывам  smile 

Рекомендую этот сайт, уйма примеров!

Это сообщение отредактировал(а) javastic - 18.9.2007, 10:10


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
Samuil
Дата 18.9.2007, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в(Job)ываю
**


Профиль
Группа: Участник
Сообщений: 705
Регистрация: 26.4.2006
Где: Uzbekistan.Tashke nt

Репутация: 5
Всего: 6



javastic, Спасибо. Круто!
Но проблема все еще открыта. Делаю все как там, и не получается вот мои коды чуть измененные:
Код

import java.io.*;

import javax.servlet.*;
import javax.servlet.http.*;

public class Post extends HttpServlet {

    protected void doPost(HttpServletRequest req, HttpServletResponse res) throws
            ServletException, IOException {

            res.setContentType("text/plain");
        InputStream in = req.getInputStream();
        OutputStream out = res.getOutputStream();
        DataInputStream din = new DataInputStream(in);
        DataOutputStream dout = new DataOutputStream(out);

        dout.writeUTF("Тest");
        out.close();
    }
}


Код

import java.io.*;
import javax.microedition.io.*;
import javax.microedition.midlet.*;


public class Client extends MIDlet {
  private String errorMsg = null;

  protected void startApp() {
    try {
      lookupBalance_withPOST();
    } catch (IOException ex) {}
  }

  protected void updateWaitStatus() {}

  private void lookupBalance_withPOST() throws IOException {
    HttpConnection http = null;
    OutputStream oStrm = null;
    InputStream iStrm = null;
    boolean ret = true;

    String url = "http://localhost:8080/WebModule/post.html";

    try {
      http = (HttpConnection) Connector.open(url);
      oStrm = http.openOutputStream();

          http.setRequestProperty("Content-Type",
                              "application/x-www-form-urlencoded");


      byte data[] = ("account=" + "Serega").getBytes();
      oStrm.write(data);
      data = ("&password=" + "040290").getBytes();
      oStrm.write(data);

      oStrm.flush();

          iStrm = http.openDataInputStream();
          int ch;
          while ((ch = iStrm.read()) != -1) {
            System.out.print((char)ch);
          }


    } finally {

      if (oStrm != null) {
        oStrm.close();
      }
      if (http != null) {
        http.close();
      }
    }
  }
  

  private boolean processServerResponse(HttpConnection http, InputStream iStrm) throws
      IOException {
    //Reset error message
    errorMsg = null;

    if (http.getResponseCode() == HttpConnection.HTTP_OK) {

      int length = (int) http.getLength();
      String str;
      if (length != -1) {
        byte servletData[] = new byte[length];
        iStrm.read(servletData);
        str = new String(servletData);
      } else { // Length not available...
        ByteArrayOutputStream bStrm = new ByteArrayOutputStream();

        int ch;
        while ((ch = iStrm.read()) != -1) {
          bStrm.write(ch);
        }

        str = new String(bStrm.toByteArray());
        bStrm.close();
      }

      // Update the string item on the display
      System.out.println(str);
      return true;

    } else {
      errorMsg = new String(http.getResponseMessage());
    }
    System.out.println(errorMsg);
    return false;
  }


  public void make() {
    DataInputStream din = null;
    HttpConnection conn = null;
    DataOutputStream dout = null;
    String title = "Error";
    String description = "Error";

    try {

      conn = (HttpConnection) Connector.open(
          "http://localhost:8080/WebModule/query");
      conn.setRequestMethod(HttpConnection.POST);

      dout = conn.openDataOutputStream();
      dout.writeInt(1);
      System.out.println("Write complete");
      dout.flush();
      dout.close();
      updateWaitStatus();

      conn.setRequestMethod(HttpConnection.GET);

      din = conn.openDataInputStream();
      title = din.readUTF().toString();
      updateWaitStatus();
      description = din.readUTF();
      updateWaitStatus();

      System.out.println("title: " + title);
      System.out.println("description: " + description);

    } catch (Exception exp) {
      exp.printStackTrace();

    } finally {
      try {
        if (dout != null) {
          dout.close();
        }
        if (din != null) {
          din.close();
        }
        if (conn != null) {
          conn.close();
        }
      } catch (Exception exp) {}
    }
  }

  protected void pauseApp() {}

  protected void destroyApp(boolean _boolean) {}

}


Это сообщение отредактировал(а) Samuil - 18.9.2007, 22:50


--------------------
Выбор уже сделан, остается его только осознать   
smile    smile 
      smile  

user posted image
PM MAIL ICQ   Вверх
javastic
Дата 19.9.2007, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 19
Всего: 27



Сдаётся не что ты не правильно формируешь POST запрос. Например вот это:
Код

      byte data[] = ("account=" + "Serega").getBytes();
      oStrm.write(data);
      data = ("&password=" + "040290").getBytes();
      oStrm.write(data);


я бы сформировал всё в одну строку и только потом б отсылал, а так сервер может воспринять это как разрыв данных.

+ ещё попробуй убрать нафиг       oStrm.flush();


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
Samuil
Дата 19.9.2007, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в(Job)ываю
**


Профиль
Группа: Участник
Сообщений: 705
Регистрация: 26.4.2006
Где: Uzbekistan.Tashke nt

Репутация: 5
Всего: 6



javastic, большое Тебе спасибо smile Все, я разобрался.
Тема закрыта!!!


--------------------
Выбор уже сделан, остается его только осознать   
smile    smile 
      smile  

user posted image
PM MAIL ICQ   Вверх
javastic
Дата 20.9.2007, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 19
Всего: 27



А чё было то? Многим будет интересно.


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
Samuil
Дата 22.9.2007, 05:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в(Job)ываю
**


Профиль
Группа: Участник
Сообщений: 705
Регистрация: 26.4.2006
Где: Uzbekistan.Tashke nt

Репутация: 5
Всего: 6



Код

 HttpConnection http = null;
    OutputStream oStrm = null;
    InputStream iStrm = null;

    // Data is passed as a separate stream for POST (below)
    String url = "http://localhost:8080/WebModule/post";

    try {
      http = (HttpConnection) Connector.open(url);
      http.setRequestMethod(HttpConnection.POST);
      http.setRequestProperty("Content-Type",
                              "application/x-www-form-urlencoded");
      oStrm = http.openOutputStream();

      byte data[] = ("account=" +"Sergey").getBytes();
      oStrm.write(data);



Сервлет по такому же принципу, только берет данные из поля account.
Элементарно просто smile 



--------------------
Выбор уже сделан, остается его только осознать   
smile    smile 
      smile  

user posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0585 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.