一、背景介绍

最近因为业务需要,需要在android设备中建立服务,用于服务端。

服务端在android设备中,采用NanoHTTPD实现android设备做为服务端。

客户端采用HttpUrlConnect连接服务端,并接受响应信息。

二、 问题介绍

    通 过客户端将数据发送到android设备后,客户端需要接收android侧返回的响应数据,以便执行相应操作。

但问题出现了,通过conn.getResponseCode()获取的状态为一直为200,说明执行成功了,但响应信息一直为空;通过postman测试也是可以获取相应信息的。

三、分析问题

1.通过postman可以接收到信息,说明andriod测服务端已经发送信息

2. 客户端侧,通过inputStream = conn.getInputStream()接收的响应信息一直为空

通过分析,虽然客户端已经发送信息,但有可能发送的信息不是客户端想要的

所以需要分析android侧发送的响应信息(此响应信息为其他人创建):

查看响应信息,发现继承的响应信息,通过super,将参数InputStream置空, length置为了0L

正是由于此造成了无法将信息传递给客户端


public class ChildResponse extends Response {

private static final String mimeType ="application/json";

 public ChildResponse () {

            super(Status.OK, "application/json", (InputStream)null, 0L);

    }

    public void setFailed() {

        this.setStatus(Status.BAD_REQUEST);

    }

    public void setJSON(String Json) {

        this.setData(new ByteArrayInputStream(Json.getBytes(Charset.forName("UTF-8"))));

    }

}


解决方法:

在响应信息类中增加一个带InputStream, length的构造方法

  说明:此处的inputStream即为HttpUrlConnect的getInputStream所获取的

            length为所传递给客户端的数据长度

public ChildResponse (InputStream inputStream, long length) {

super(Status.OK, "application/json", (InputStream)inputStream, length);

}

在业务逻辑中,执行完request请求后,返回响应信息时,通过带参数的构造方法,将响应信息传递给客户端

String responseData = object.toString();

ByteArrayInputStream byteArrayInputStream =new ByteArrayInputStream(responseData.getBytes());

response =new JsonResponse(byteArrayInputStream,responseData.length());

更多相关文章

  1. Android仿人人客户端(v5.7.1)——主流程(活动)图
  2. execlp启动android进程命令窗口通过adb shell 进入android 的Lin
  3. 获取Android 设备信息——build.prop
  4. android调用隐藏的网络信息设置菜单实现
  5. Android 为 Android 开发访问 JAX-RS Web 服务的 Apache HttpCli
  6. 【博客园客户端】博客园Android客户端更新:离线下载、本地收藏、R
  7. Android客户端通过socket与服务器通信
  8. 《Android/OPhone开发完全讲义》连载(5):Notification与状态栏信息
  9. 面向UDP的Android——PC双向通信(一):实现Android客户端和PC服务器

随机推荐

  1. Android下载网络图片到本地
  2. android——Bitmap.Config ARGB_8888
  3. android 让TextView自带滚动条
  4. Android(安卓)监听 home键和菜单键
  5. 【Android】在任何View上添加红点★★★
  6. Android(安卓)动态切换底部tab按钮
  7. Android(安卓)7.0 app代码修改抓包
  8. 视频聊天系统源码Android(安卓)播放视频
  9. Android电池管理
  10. Android(安卓)2.2.2到Android(安卓)4.2.2