package lizhen.http;
import java.io.IOException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
public class HTTPRequest {
private String errorMessage; //錯誤信息
/**
* HTTP請求字符串資源
* @param url URL地址
* @return 字符串資源
* */
public String httpRequestString(String url) {
String result = null;
try {
HttpEntity httpEntity = httpRequest(url);
if(httpEntity != null) {
result = EntityUtils.toString(httpEntity, "urf-8"); //使用UTF-8編碼
}
} catch (IOException e) {
errorMessage = e.getMessage();
}
return result;
}
/**
* HTTP請求字節數組資源
* @param url URL地址
* @return 字節數組資源
* */
public byte[] httpRequestByteArray(String url) {
byte[] result = null;
try {
HttpEntity httpEntity = httpRequest(url);
if(httpEntity != null) {
result = EntityUtils.toByteArray(httpEntity);
}
} catch (IOException e) {
errorMessage = e.getMessage();
}
return result;
}
/**
* 使用HTTP GET方式請求
* @param url URL地址
* @return HttpEntiry對象
* */
private HttpEntity httpRequest(String url) {
HttpEntity result = null;
try {
HttpGet httpGet = new HttpGet(url);
HttpClient httpClient = new DefaultHttpClient();
HttpResponse httpResponse;
httpResponse = httpClient.execute(httpGet);
int httpStatusCode = httpResponse.getStatusLine().getStatusCode();
/*
* 判斷HTTP狀態碼是否為200
* */
if(httpStatusCode == HttpStatus.SC_OK) {
result = httpResponse.getEntity();
} else {
errorMessage = "HTTP: "+httpStatusCode;
}
} catch (ClientProtocolException e) {
errorMessage = e.getMessage();
} catch (IOException e) {
errorMessage = e.getMessage();
}
return result;
}
/**
* 返回錯誤消息
* @return 錯誤信息
* */
public String getErrorMessage() {
return this.errorMessage;
}
}
示例代码使用HTTP Get方式请求远端资源。
httpRequestString方法适用于请求XML/JSON等文本资源。
httpRequestByteArray方法适用于请求图片/音乐等二进制资源。
当返回值为null时,调用getErrorMessage方法返回错误信息。
分享到:
相关推荐
在Android应用中,我们可以使用`java.net.DatagramSocket`类来创建一个UDP套接字,并使用`java.net.DatagramPacket`类来封装发送和接收的数据。以下是一些关键步骤: 1. **创建DatagramSocket**:首先,我们需要...
在客户端,我们将`StockQuote`对象转换为`ByteString`,在服务器端接收后,再反转换回`StockQuote`对象。 在实际应用中,为了实现安全的网络通信,我们通常会采用HTTPS协议,并且可能需要添加身份验证机制,如OAuth...
总的来说,Android应用通过HTTP连接与MySQL数据库交互,实现登录和注册功能,涉及到的关键技术包括Android的网络访问、PHP服务器端编程以及数据库操作。理解并掌握这些知识点对于开发具有网络功能的Android应用至关...
在Android开发中,有时我们需要与服务器进行数据交互,比如上传用户的照片或者其他文件。在这个场景下,`Ksoap2`库就扮演了关键角色,它是一个轻量级的库,用于在Android应用程序中与基于SOAP(Simple Object Access...
本项目涉及的是Android应用与PC之间的Socket通信技术,主要涵盖了两个方面:一是Android客户端的实现,二是PC端的C#和Java服务器端的构建。在实际应用中,这种通信方式常用于设备间的数据交换、远程控制或者游戏同步...
在Android平台上,蓝牙通信是一种常见的...无论是客户端还是服务端,都需要管理好蓝牙状态、设备搜索、连接建立和数据传输。在实际应用中,还可以添加错误处理、连接状态监控等功能,以提高系统的稳定性和用户体验。
C#中的`HttpClient`类可以处理HTTP请求,Android则有`java.net.HttpURLConnection`或第三方库如Retrofit。 3. **WebDAV**:基于HTTP的WebDAV允许客户端直接读写远程服务器上的文件,C#有`System.Web.Services....
在这个项目中,我们将深入探讨如何在Android设备上使用Socket来与电脑进行数据交换,特别是在WiFi网络环境下。 首先,我们需要理解Socket的基本概念。Socket在计算机网络中扮演着桥梁的角色,它允许两个网络应用...
此外,还可以利用TCP或UDP协议栈实现更复杂的网络服务,如使用SocketServer在服务器端接收连接请求,或者使用HTTP、HTTPS等上层协议进行更安全的通信。 至于提供的压缩文件`9d0375b6f2324b8c97e66e713d000205`,...
在Android应用开发中,文件上传是一项常见的任务,尤其在处理用户数据或与服务器交互时。本文将详细讲解如何使用开源库AsyncHttpClient实现文件上传。AsyncHttpClient是一个轻量级的网络库,提供了异步HTTP请求的...
Socket源自网络编程,它提供了进程间网络通信的途径,使得Android应用能够发送和接收来自远程服务器的数据。本压缩包“安卓socket与服务器通讯源码.zip”中很可能包含了一个完整的示例项目,用于演示如何在Android...
总的来说,Android通过`HttpPost`上传文本文件到服务器的关键在于正确地构造`POST`请求的格式,包括设置正确的请求头和内容,以及处理服务器的响应。这个实例提供了一个基础的实现,开发者可以根据具体需求进行扩展...
你可以使用Android的`OkHttp`库发起HTTP请求,将图片数据发送到服务器,然后服务器再将数据推送到Android客户端。或者,你可以使用`WebSocket`进行双向通信,实现实时图像传输。 总的来说,实现电脑摄像头的实时...