android上传文件到服务器,怎么把android gps坐标位置上传到服务器
很多朋友对于android上传文件到服务器和怎么把android gps坐标位置上传到服务器不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
android的自带的httpClient 怎么上传文件
在Android开发中,Android SDK附带了Apache的HttpClient,它是一个完善的客户端。它提供了对HTTP协议的全面支持,可以使用HttpClient的对象来执行HTTP GET和HTTP POST调用。
HTTP工作原理:
1.客户端(一般是指浏览器,这里是指自己写的程序)与服务器建立连接
2.建立连接后,客户端向服务器发送请求
3.服务器接收到请求后,向客户端发送响应信息
4.客户端与服务器断开连接
HttpClient的一般使用步骤:
1.使用DefaultHttpClient类实例化HttpClient对象
2.创建HttpGet或HttpPost对象,将要请求的URL通过构造方法传入HttpGet或HttpPost对象。
3.调用execute方法发送HTTP GET或HTTP POST请求,并返回HttpResponse对象。
4.通过HttpResponse接口的getEntity方法返回响应信息,并进行相应的处理。
最后记得要在AndroidManifest.xml文件添加网络权限
<uses-permission android:name="android.permission.INTERNET"/>
附件中包含了一个拍照上传的源代码
Android开发访问FTP服务器
commons-net.jar里面有ftp相关的接口,这个是我自己封装的一个类
import java.io.FileInputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
public class FTPUtils{
/**
*通过ftp上传文件
*
*@param fileNamePath
*要上传的文件路径,以'结'尾
*@param fileName
*要上传的文件名
*@return如果成功返回"",否则返回错误结果
*/
public static String ftpUpload(String sdcardFullFileName, String fileName, String ftpPath){
FTPClient ftpClient= new FTPClient();
FileInputStream fis= null;
String returnMessage="";
try{
ftpClient.connect(ConnectConfig.ftpIP, ConnectConfig.ftpPort);
boolean loginResult= ftpClient.login(ConnectConfig.ftpUserName, ConnectConfig.ftpPassWord);
int returnCode= ftpClient.getReplyCode();
if(loginResult&& FTPReply.isPositiveCompletion(returnCode)){//如果登录成功
String[] splits= ftpPath.split("/");
String temps= splits[0];
ftpClient.makeDirectory(temps);
for(int i=1;i<splits.length;i++){
temps+="/"+ splits[i];
ftpClient.makeDirectory(temps);
}
// ftpClient.makeDirectory(ftpPath);
//设置上传目录
ftpClient.changeWorkingDirectory(ftpPath);
ftpClient.setBufferSize(1024);
ftpClient.setControlEncoding("UTF-8");
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
ftpClient.enterLocalPassiveMode();
fis= new FileInputStream(sdcardFullFileName);
// boolean result= ftpClient.(fileName, fis);
boolean result= ftpClient.storeFile(fileName, fis);
if(result){
returnMessage="";//上传成功
}else{
returnMessage="上传失败";
}
} else{//如果登录失败
returnMessage="登录FTP时失败,FTP用户名或者密码错误!";
}
} catch(IOException e){
// ftp发送出现异常
e.printStackTrace();
returnMessage="FTP客户端出错!"+ e;
} finally{
try{
ftpClient.disconnect();
} catch(IOException e){
e.printStackTrace();
}
}
return returnMessage;
}
}
怎么把android gps坐标位置上传到服务器
在配备Android系统的手机中,一般都配备了GPS设备。Android为我们获取GPS数据提供了很好的接口。本文来说一下如何使用Android获取GPS的经纬度。
1从Service继承一个类。
2创建startService()方法。
3创建endService()方法重载onCreate方法和onDestroy方法,并在这两个方法里面来调用startService以及endService。
4在startService中,通过getSystemService方法获取Context.LOCATION_SERVICE。
5基于LocationListener实现一个新类。默认将重载四个方法onLocationChanged、onProviderDisabled、onProviderEnabled、onStatusChanged。对于onLocationChanged方法是我们更新最新的GPS数据的方法。一般我们的操作都只需要在这里进行处理。
6调用LocationManager的requestLocationUpdates方法,来定期触发获取GPS数据即可。在onLocationChanged函数里面可以实现我们对得到的经纬度的最终操作。
7最后在我们的Activity里面通过按钮来启动Service,停止Service。
示意代码如下:
package com.offbye.gpsservice;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log;
public class GPSService extends Service{
// 2000ms
private static final long minTime= 2000;
//最小变更距离10m
private static final float minDistance= 10;
String tag= this.toString();
private LocationManager locationManager;
private LocationListener locationListener;
private final IBinder mBinder= new GPSServiceBinder();
public void startService(){
locationManager=(LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationListener= new GPSServiceListener();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, minTime, minDistance,
locationListener);
}
public void endService(){
if(locationManager!= null&& locationListener!= null){
locationManager.removeUpdates(locationListener);
}
}
@Override
public IBinder onBind(Intent arg0){
// TODO Auto-generated method stub
return mBinder;
}
@Override
public void onCreate(){
//
startService();
Log.v(tag,"GPSService Started.");
}
@Override
public void onDestroy(){
endService();
Log.v(tag,"GPSService Ended.");
}
public class GPSServiceBinder extends Binder{
GPSService getService(){
return GPSService.this;
}
}
}
GPSServiceListener的实现
package com.offbye.gpsservice;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.TimeZone;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationProvider;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
public class GPSServiceListener implements LocationListener{
private static final String tag="GPSServiceListener";
private static final float minAccuracyMeters= 35;
private static final String hostUrl="http://doandroid.info/gpsservice/position.php?";
private static final String user="huzhangyou";
private static final String pass="123456";
private static final int duration= 10;
private final DateFormat timestampFormat= new SimpleDateFormat("yyyyMMddHHmmss");
public int GPSCurrentStatus;
@Override
public void onLocationChanged(Location location){
// TODO Auto-generated method stub
if(location!= null){
if(location.hasAccuracy()&& location.getAccuracy()<= minAccuracyMeters){
//获取时间参数,将时间一并Post到服务器端
GregorianCalendar greg= new GregorianCalendar();
TimeZone tz= greg.getTimeZone();
int ffset= tz.getOffset(System.currentTimeMillis());
greg.add(Calendar.SECOND,(offset/ 1000)*-1);
StringBuffer strBuffer= new StringBuffer();
strBuffer.append(hostUrl);
strBuffer.append("user=");
strBuffer.append(user);
strBuffer.append("&pass=");
strBuffer.append(pass);
strBuffer.append("&Latitude=");
strBuffer.append(location.getLatitude());
strBuffer.append("&Longitude=");
strBuffer.append(location.getLongitude());
strBuffer.append("&Time=");
strBuffer.append(timestampFormat.format(greg.getTime()));
strBuffer.append("&Speed=");
strBuffer.append(location.hasSpeed());
doGet(strBuffer.toString());
Log.v(tag, strBuffer.toString());
}
}
}
//将数据通过get的方式发送到服务器,服务器可以根据这个数据进行跟踪用户的行走状态
private void doGet(String string){
// TODO Auto-generated method stub
//
}
@Override
public void onProviderDisabled(String provider){
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider){
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras){
// TODO Auto-generated method stub
GPSCurrentStatus= status;
}
}
摘自 offbye的技术博客
好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!