還是接上篇 Struts2+Android 實現信息,文件上傳功能
修改了一些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;
- }
- }
更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11