还是接上篇
修改了一些VideoManageAction
package com.su.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.su.action.util.StreamTool;
public class VideoManageAction extends ActionSupport {
private String title;
private String timelength;
private File myFile;
private String myFileFileName;
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
private String method;
public File getMyFile() {
return myFile;
}
public void setMyFile(File myFile) {
this.myFile = myFile;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getTimelength() {
return timelength;
}
public void setTimelength(String timelength) {
this.timelength = timelength;
}
public void setMyFileFileName(String myFileFileName) {
this.myFileFileName = myFileFileName;
}
public String getMyFileFileName() {
return myFileFileName;
}
public String execute() throws Exception {
if (method.equals("getXml")) {
InputStream inStream = ServletActionContext.getRequest().getInputStream();
byte[] data = StreamTool.readInputStream(inStream);
String xml = new String(data, "UTF-8");
System.out.println("11111111111111111111");
System.out.println(xml);
}
if (myFile!=null) {
InputStream is = new FileInputStream(myFile);
String uploadPath = ServletActionContext.getServletContext()
.getRealPath("/upload");
File file = new File(uploadPath);
if (!file.exists()) {
file.mkdir();
}
File toFile = new File(uploadPath, this.getMyFileFileName());
OutputStream os = new FileOutputStream(toFile);
byte[] buffer = new byte[1024];
int length = 0;
while ((length = is.read(buffer)) > 0) {
os.write(buffer, 0, length);
}
is.close();
os.close();
}
System.out.println(this.getTimelength()+"\n"+this.getTitle()+"\n");
return SUCCESS;
}
}
这次使用TestCase 用的时候加如activity吧
package cn.itcast.uploaddata;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import cn.itcast.net.HttpRequest;
import android.test.AndroidTestCase;
import android.util.Log;
public class HttpRequestTest extends AndroidTestCase {
private static final String TAG = "HttpRequestTest";
public void testSendXMLRequest() throws Throwable{
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><persons><person id=\"23\"><name>liming</name><age>30</age></person></persons>";
HttpRequest.sendXML("http://10.1.27.35:8080/VideoWeb2/upload.action?method=getXml", xml);
}
public void testSendGetRequest() throws Throwable{
//?method=save&title=xxxx&timelength=90
Map<String, String> params = new HashMap<String, String>();
//params.put("method", "save");
params.put("title", "liming");
params.put("timelength", "80");
HttpRequest.sendGetRequest("http://10.1.27.35:8080/VideoWeb2/upload.action", params, "UTF-8");
}
public void testSendPostRequest() throws Throwable{
Map<String, String> params = new HashMap<String, String>();
//params.put("method", "save");
params.put("title", "中国");
params.put("timelength", "80");
HttpRequest.sendPostRequest("http://10.1.27.35:8080/VideoWeb2/upload.action", params, "UTF-8");
}
public void testSendRequestFromHttpClient() throws Throwable{
Map<String, String> params = new HashMap<String, String>();
//params.put("method", "save");
params.put("title", "传智播客");
params.put("timelength", "80");
boolean result = HttpRequest.sendRequestFromHttpClient("http://10.1.27.35:8080/VideoWeb2/upload.action", params, "UTF-8");
Log.i("HttRequestTest", ""+ result);
}
}
package cn.itcast.net;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.xmlpull.v1.XmlPullParser;
import android.util.Xml;
import cn.itcast.utils.StreamTool;
public class HttpRequest {
public static boolean sendXML(String path, String xml)throws Exception{
byte[] data = xml.getBytes();
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("POST");
conn.setConnectTimeout(5 * 1000);
conn.setDoOutput(true);//如果通过post提交数据,必须设置允许对外输出数据
conn.setRequestProperty("Content-Type", "text/xml; charset=UTF-8");
conn.setRequestProperty("Content-Length", String.valueOf(data.length));
OutputStream outStream = conn.getOutputStream();
outStream.write(data);
outStream.flush();
outStream.close();
if(conn.getResponseCode()==200){
return true;
}
return false;
}
public static boolean sendGetRequest(String path, Map<String, String> params, String enc) throws Exception{
StringBuilder sb = new StringBuilder(path);
sb.append('?');
// ?method=save&title=435435435&timelength=89&
for(Map.Entry<String, String> entry : params.entrySet()){
sb.append(entry.getKey()).append('=')
.append(URLEncoder.encode(entry.getValue(), enc)).append('&');
}
sb.deleteCharAt(sb.length()-1);
URL url = new URL(sb.toString());
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5 * 1000);
if(conn.getResponseCode()==200){
return true;
}
return false;
}
public static boolean sendPostRequest(String path, Map<String, String> params, String enc) throws Exception{
// title=dsfdsf&timelength=23&method=save
StringBuilder sb = new StringBuilder();
if(params!=null && !params.isEmpty()){
for(Map.Entry<String, String> entry : params.entrySet()){
sb.append(entry.getKey()).append('=')
.append(URLEncoder.encode(entry.getValue(), enc)).append('&');
}
sb.deleteCharAt(sb.length()-1);
}
byte[] entitydata = sb.toString().getBytes();//得到实体的二进制数据
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("POST");
conn.setConnectTimeout(5 * 1000);
conn.setDoOutput(true);//如果通过post提交数据,必须设置允许对外输出数据
//Content-Type: application/x-www-form-urlencoded
//Content-Length: 38
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length", String.valueOf(entitydata.length));
OutputStream outStream = conn.getOutputStream();
outStream.write(entitydata);
outStream.flush();
outStream.close();
if(conn.getResponseCode()==200){
return true;
}
return false;
}
//SSL HTTPS Cookie
public static boolean sendRequestFromHttpClient(String path, Map<String, String> params, String enc) throws Exception{
List<NameValuePair> paramPairs = new ArrayList<NameValuePair>();
if(params!=null && !params.isEmpty()){
for(Map.Entry<String, String> entry : params.entrySet()){
paramPairs.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
}
}
UrlEncodedFormEntity entitydata = new UrlEncodedFormEntity(paramPairs, enc);//得到经过编码过后的实体数据
HttpPost post = new HttpPost(path); //form
post.setEntity(entitydata);
DefaultHttpClient client = new DefaultHttpClient(); //浏览器
HttpResponse response = client.execute(post);//执行请求
if(response.getStatusLine().getStatusCode()==200){
return true;
}
return false;
}
}
分享到:
相关推荐
总结起来,"struts2+Mysql搭建的服务端 +android 客户端 post,get请求"这个项目涵盖了Web服务开发的多个关键方面:服务端架构设计、数据库管理和客户端网络通信。了解并熟练掌握这些技术,对于构建高效、安全的移动...
这个博客详细介绍了Android和Struts2配合实现图片上传的步骤,包括客户端的网络请求和服务器端的接收处理。通过阅读这篇博文,你可以获得更具体的实现细节和可能遇到的问题解决方案。 总的来说,Android+Struts2...
这个例子“基于android开发的服务器端和客户端例子Struts2AndJSON”是展示如何在Android客户端与使用Struts2框架的服务器端之间进行数据交换的一个教程。下面将详细阐述相关知识点。 1. **Android开发**:Android是...
在Android平台上,向服务器发送文本信息是一个常见的任务,特别是在开发移动应用时,需要与后端服务器进行数据交互。本示例中的"android发送文字信息至服务器端"涉及到的技术点主要包含以下几个方面: 1. **Android...
在Android应用开发中,文件上传是一项常见的功能,通常用于用户分享图片、文档等信息到服务器。Struts2作为Java Web框架,提供了处理文件上传的能力。本篇将详细讲解如何实现Android客户端上传文件以及Struts2服务端...
通过以上步骤,Android应用可以成功地与使用Struts2的服务器端进行数据交互。这个过程涉及到了网络请求、服务器端的MVC架构、数据格式化以及客户端的解析和展示,是移动应用开发中不可或缺的一部分。在实际开发中,...
3. **错误处理**:确保处理可能出现的网络错误,如超时、无网络连接等,并向用户显示友好的错误信息。 4. **异步处理**:避免在主线程中执行网络请求,使用`AsyncTask`或`LiveData`等工具进行异步操作,以保持界面...
本文将深入探讨“Android客户端远程登录Web服务器数据交换实例”,讲解如何使用MySQL数据库、JSON数据传输以及Struts2、JavaBean和Servlet等技术。 首先,让我们了解一下MySQL数据库。MySQL是一款开源的关系型...
**Struts2 Android (2.2) 模拟数据访问项目 JSON项目** 这个项目是基于Struts2框架和Android平台的,目标是实现一个利用JSON进行数据交换的应用。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,...
本示例探讨了如何实现Android客户端与基于Struts、Hibernate和Spring的后台服务器之间的数据交互,使用JSON作为数据传输格式。对于初学者来说,这是一个很好的起点,因为它涵盖了多个关键的技术栈。 首先,让我们...
本篇将详细介绍如何实现从Android客户端向Struts2服务器端上传多个文件。 **一、Android端上传文件** 1. **获取文件**:在Android端,你可以使用`Intent Chooser`让用户选择多个文件,通过`ContentResolver`读取...
它们允许Android应用向Web服务器发送HTTP请求(GET、POST等)并接收响应。开发者需要处理异步任务,因为网络操作不应该在主线程上执行,以免阻塞UI。可以使用AsyncTask、IntentService或现代的LiveData、Coroutines...
### Android连接服务器端的数据交互方法 #### 摘要与背景 随着移动互联网技术的快速发展,特别是3G网络的普及,智能手机已经不仅仅是传统的通讯工具,更成为了接入互联网的重要终端之一。在这种背景下,如何让...
这里提到的是使用Struts2框架在服务端进行文件接收的场景,而Android客户端则负责发起文件上传请求。Struts2是一个流行的Java web框架,它提供了一套完整的MVC(Model-View-Controller)架构,便于开发和维护Web应用...
1. 创建HTTP请求:Android客户端通常使用HttpURLConnection或OkHttp库发起HTTP请求,向服务器发送GET或POST请求,请求中携带JSON数据。 2. JSON序列化与反序列化:使用Gson、Jackson或org.json等库,可以将Java对象...
这段代码实现了通过HTTP POST方式向服务器发送请求的功能。其中`sendRequest`方法接收URL地址以及参数列表,通过`DefaultHttpClient`发送POST请求,并读取服务器返回的响应体内容。 #### 四、总结 本文通过一个具体...
3. **发送请求**:使用网络连接发送请求。对于GET请求,直接调用`openConnection().getOutputStream()`;对于POST请求,需要先调用`setDoOutput(true)`开启输出流,然后写入请求体数据。 4. **接收响应**:服务器...
这里的`sendRequest`方法可以用于向服务器发送登录请求等。 #### 实战案例分析 假设我们需要开发一个登录功能,流程如下: 1. 用户在Android客户端输入用户名和密码。 2. Android客户端通过HTTP POST请求将这些...
10. 错误处理:客户端和服务器端都需要考虑异常处理,如网络中断、服务器错误等,以便向用户展示友好错误信息并采取相应的恢复措施。 通过以上分析,我们可以看出这个源码实例涵盖了Android网络编程、JSON数据交换...
登录功能需要向服务器发送POST请求,包含用户名和密码等登录信息,并接收服务器返回的验证结果。 3. **异步处理**:由于网络操作是阻塞的,我们不能在主线程中执行这些操作,否则会导致应用程序无响应。Android提供...