我想构建一个消耗一些REST API的Android应用程序。
我使用HttpURLConnection
进行基本身份验证和GET / PUT一些数据,但我觉得我做错了。
我有两个类ConnectionPUT
和ConnectionGET
,我为每个请求调用,因为每个HttpURLConnection实例用于发出单个请求。
使用HttpURLConnection在Android上构建REST客户端的正确方法是什么?
答案 0 :(得分:3)
这是在Android中使用HttpUrlConnection
调用Http GET的示例代码。
URL url;
HttpURLConnection urlConnection = null;
try {
url = new URL("your-url-here");
urlConnection = (HttpURLConnection) url
.openConnection();
InputStream in = urlConnection.getInputStream();
InputStreamReader isw = new InputStreamReader(in);
int data = isw.read();
while (data != -1) {
char current = (char) data;
data = isw.read();
System.out.print(current);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (urlConnection != null) {
urlConnection.disconnect();
}
}
但我强烈建议您不要重新发明用于为Android应用程序创建REST
客户端的轮子,而是尝试使用Retrofit和Volley这些适应性强且可靠的库来进行网络化。
它们非常可靠并经过测试,并删除了您为网络通信编写的所有样板代码。
有关更多信息,我建议您学习以下有关Retrofit和Volley的文章
答案 1 :(得分:0)
使用HttpURLConnection的REST客户端
try {
URL url = new URL("YOUR_URL");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
BufferedReader reader = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
StringBuffer data= new StringBuffer(1024);
String tmpdata="";
while((tmpdata=reader.readLine())!=null) {
data.append(tmpdata).append("\n");
}
reader.close();
}catch(Exception e){
e.printStackTrace();
} finally {
if (conn!= null) {
conn.disconnect();
}
}