2

我想在我的 android 应用程序中嵌入一个网络服务器,连接到它的设备将具有两种功能。一个是发送一个 xml 文件,我可以解析并做一些事情,另一个是能够从我的 sd 卡下载文件。

我发现 nanoHTTPD 和 AndroidHTTPD 等,但不是很好的文档,而且我遇到了问题,尤其是在如何提供下载文件的能力方面。除了我上面提到的那些之外,是否有任何好的教程/示例可以处理文件或易于使用的库?

4

1 回答 1

3

我想到了两件事,两者都与权限相关。看看你的android清单,你的应用需要两个权限

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

INTERNET,因为您正在访问网络服务,而 WRITE_EXTERNAL_STORAGE 因为当 NanoHttpd 接收到传入连接时,它会写入临时文件,并且大多数/所有手机都将“java.io.tmpdir”映射为指向 SD 卡。

创建一个扩展基本 NanoHttpd 的类,传递您要在其上运行的套接字,然后实现抽象的“serve()”方法。

当您的客户端应用程序上传他们的 XML 文件时,请确保它以标准的 Multipart 格式编码发送,并且文件名将在 serve() 的“文件”映射参数中提供给您。

当您将响应发送回客户端时,新建一个 Response() 对象,您可以将其传递给InputStream(来自您的 SD 卡文件),也可以只传递一个字符串作为内容。

如果您需要文档,以示例的形式,NanoHttpd 包括一个提供文件的功能齐全的网络服务器,我称之为“DemoServer”,它非常适合调试客户端应用程序发送的内容。目前还没有任何 Android 特定示例,但问题的数量表明我应该添加一些。:)

谢谢。希望这可以帮助。如果您有更多问题,请告诉我。

于 2013-07-31T12:58:55.677 回答