【问题标题】:how to send and get object using httpurlconnection?如何使用 httpurlconnection 发送和获取对象?
【发布时间】:2017-10-28 17:06:08
【问题描述】:

如何使用HttpUrlconnection 将类的对象作为帖子发送并再次从服务器获取?我应该怎么做才能实现Serializable?有什么方法可以发送对象列表吗?! 谢谢

【问题讨论】:

    标签: android object post serialization httpurlconnection


    【解决方案1】:

    首先你需要调用这些:

    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();
    

    【讨论】:

    • doInput(true) 是默认值。
    【解决方案2】:

    您可以通过 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。现在初始化 GSON 并根据需要创建此类的对象

    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 实例并设置一个监听器

    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

    希望能解决

    【讨论】:

      猜你喜欢
      • 2018-06-11
      • 1970-01-01
      • 1970-01-01
      • 2021-05-12
      • 1970-01-01
      • 1970-01-01
      • 2012-09-29
      • 1970-01-01
      • 2017-07-04
      相关资源
      最近更新 更多