一、背景介绍

最近因为业务需要,需要在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(安卓)Studio的build.gradle里面的各种版本信息
  2. 采用XMPP协议实现Android推送
  3. Android仿人人客户端(v5.7.1)——主流程(活动)图
  4. Android(安卓)之 选项菜单Option Menu
  5. execlp启动android进程命令窗口通过adb shell 进入android 的Lin
  6. 采用XMPP协议实现Android推送
  7. 【转】Android中对Log日志文件的分析
  8. android调用隐藏的网络信息设置菜单实现
  9. Android(安卓)为 Android(安卓)开发访问 JAX-RS Web 服务的 Apac

随机推荐

  1. android弹出框2(相当于通知)
  2. Java編程和Android編程的區別
  3. Android(安卓)多线程注意事项
  4. Android(安卓)adb setuid提权漏洞的分析
  5. android 线程间通信
  6. android短彩信数据库设计(三)
  7. Android(安卓)API 中文 (54) —— Filterab
  8. android 零散笔记不定期更新 v16
  9. Android(安卓)1.5 1.6 2.0 2.1 2.2 2.3 3
  10. 简单的 Android(安卓)拍照并显示以及获取