Android 的 HTTP 客户端:GET, POST, Download, Upload, Multipart Req...
英文原文:Android HTTP Client: GET, POST, Download, Upload, Multipart Request
标签:
Android
Android应用通常都要和远程服务器进行交互。最简单的方式是使用基于HTTP协议来传输信息。在一些场景里HTTP协议是非常有用的,就像从远程服务器下载一个图像或者上传一些二进制数据到服务器。Android应用程序使用GET或POST请求来发送数据。在这篇文章,我们想要分析怎样用HttpURLConnection来和一个远程服务器通信。 我们包含这3个主要主题:
我们会用运行在Tomcat7.0里的3个简单Servlet来作为一个简单的服务器。我们不会讲到怎样使用API3.0来创建Servlet但源代码现在就会提供。
|
throwable
|
GET 和POST 请求
GET和POST是HTTP协议里的基本模块。要使用这些类型的请求,我们首先需要打开一个连接到远程服务器连接:
我们在第一行得到HttpURLConnection,而在第二行我们设置了方法同时在最后连接到服务器。 一旦我们打开了连接,我们使用OutputStream在它上面写入东西。
我们已经知道参数是用键-值对来写入。 最后一步是使用InputStream读取返回。
我们可以看到传了一个name到服务器同时它回复了一个典型的“Hello...”。在服务器端我们可以检查服务器是否正确接收到我们传递的参数。 |
throwable
|
从服务器下载数据最常见的场景之一是一个Android APp需要从一个远程服务器下载一些数据。我们假设我们需要从服务器下载一个图片。在这种情况下我们就总得使用 AsyncTask来完成我们的操作,代码如下:
|
throwable
|
使用MultipartRequest来上传数据到服务器这是处理http连接里最复杂的部分。原生的HttpURLConnection不处理这类型的请求。它发生在一个Android App要上传一些二进制数据到服务器。它也可能是一个app上传一个图片。在这种情况下,请求会更加复杂,因为一个“普通”的请求并不足够。我们要创建一个MultipartRequest。 一个MultipartRequest是由各种不同部分组成的请求,就像参数和二进制数据。我们要怎样去处理这些请求呢? 第一部就是打开一个连接告诉服务器我们想传递一些二进制信息:
在第6行和第7行,我们指定了请求的content-type和另外一个叫boundary的字段。这个字段是一个字符串序列来分割不同部分的。 对于我们要加入的每个部分,我们需要指定它否是一个文本部分就像post参数或者它是一个而文件(二进制数据)。
|
throwable
|
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们