Как я могу отправить объект класса как сообщение, используя HttpUrlconnection, и снова получить его от сервера? что я должен сделать для реализации Serializable? и есть ли способ отправить список объектов ?! Спасибо

0
hadi seylani 28 Май 2017 в 10:07

2 ответа

Лучший ответ

Сначала вам нужно назвать это:

conn.setDoOutput(true); // enable write.
conn.setDoInput(true); // enable read.

Для отправки данных (данные должны реализовывать Serializable):

ObjectOutputStream out = new ObjectOutputStream( conn.getOutputStream() );
out.writeObject( data );
out.close();

Для получения данных:

ObjectInputStream ois = new ObjectInputStream( conn.getInputStream() );
data = ois.readObject();
ois.close();
2
RonTLV 24 Сен 2017 в 05:25

Вы можете сделать это за 8 простых шагов

1. Откройте build.gradle [PROJECT] и добавьте эти

allprojects
{
    repositories 
    {
        ...
        maven { url 'https://jitpack.io' }
    }
}

2. Откройте build.gradle [APP] и добавьте эти

dependencies 
{
        compile 'com.github.sangeethnandakumar:TestTube:v2.5.2' 
}  

3. Теперь класс, который вы не хотите отправлять на какой-либо сервер через HTTP POST

public class Student
{
  @Serialisable("name");
  String name;

  @Serialisable("subject");
  String subject;

  @Serialisable("rollno");
  String rollno;
}

@Serialisable () - это аннотация, используемая библиотекой GSON. Просто используйте то же имя внутри нее для того, что вы называете идентификаторами, как здесь. Хорошо, вы сделали 30% сейчас

4. Теперь инициализируйте JSON и создайте объекты этого класса где угодно

Gson gson = new Gson();
Student s = new Student();

s.name="Sangeeth";
s.subject="Computer Science";
s.rollno="43";

5. Преобразуйте этот объект в текст JSON.

String json = gson.toJson(s,Student.class);

6. Упакуйте эту строку JSON в DataRack

List<DataRack> racks=new ArrayList<DataRack>();
racks.add(new DataRack("my_upload",json));

7. Создайте экземпляр веб-сервера и настройте прослушиватель

WebServer server=new WebServer(getApplicationContext());

        server.setOnServerStatusListner(new WebServer.OnServerStatusListner() {
            @Override
            public void onServerResponded(String responce) {

            }

            @Override
            public void onServerRevoked() {

            }
        });

8. Просто отправьте этот запрос POST

server.connectWithPOST(MainActivity.this,"http://yourwebsite/test.php",racks);

Все здесь задокументировано: https://github.com/sangeethnandakumar/TestTube

Надеюсь это решит

-1
Kannan 28 Май 2017 в 19:13