当前位置:首页 » 安卓系统 » android与服务器端数据交互

android与服务器端数据交互

发布时间: 2022-08-23 04:26:00

1. android与服务器交互用post好还是get

要根据实际应用的需求和数据量。
HTTP 定义了与服务器交互的不同方法,最基本的方法是 GET 和 POST。
事实上 GET 适用于多数请求,而保留 POST 仅用于更新站点。根据 HTTP 规范,GET 用于信息获取,而且应该是 安全的和 幂等的。所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET 请求一般不应产生副作用。幂等的意味着对同一 URL 的多个请求应该返回同样的结果。完整的定义并不像看起来那样严格。从根本上讲,其目标是当用户打开一个链接时,它可以确信从自身的角度来看没有改变资源。比如,新闻站点的头版不断更新。虽然第二次请求会返回不同的一批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。反之亦然。
POST 请求就不那么轻松了。POST 表示可能改变服务器上的资源的请求。仍然以新闻站点为例,读者对文章的注解应该通过 POST 请求实现,因为在注解提交之后站点已经不同了(比方说文章下面出现一条注解);
在FORM提交的时候,如果不指定Method,则默认为GET请求,Form中提交的数据将会附加在url之后,以?分开与url分开。字母数字字符原样发送,但空格转换为“+“号,其它符号转换为%XX,其中XX为该符号以16进制表示的ASCII(或ISO Latin-1)值。GET请求请提交的数据放置在HTTP请求协议头中,而POST提交的数据则放在实体数据中;
GET方式提交的数据最多只能有1024字节,而POST则没有此限制。

2. android怎么与服务器交互

这个实例对新手来说只会更迷茫。给点思路:要明白android和服务器交互的框架是怎么样的。最简单的理解就是:接口,客户端如何发起请求,服务器怎么样处理收到的请求。首先要了解android客户端怎么样才能和服务器通讯。再自己学点服务器开发的知识,做个最简单的实例。 查看原帖>>

3. android平台的app 手机客户端和后台服务器怎么进行数据交互的

首先不要管安卓端还是苹果端,现在一般都是响应式的app,你放到安卓或者苹果或者pc或者平板都是没有问题的。一般采用的是http接口通讯,或者socket连接。具体你要去查资料找Demo了。而且现在主流是采用html5开发或者混合开发了。所以最好是服务器提供appAPI接口,通过http访问服务器,获取数据,数据一般是json,或者xml,拿到后解析数据就可以了,然后再用UI框架或者其他框架或者自定义的UI封装下格式很漂亮了,至于cookie和session等,看你的习惯,网络验证和签名那些也自己看习惯,如果涉及到大数据,还需要引入第三方框架的,直接引入就可以了,不过推荐自己写,防止侵权。都是很通用的。

4. android客户端如何与后台java服务器交互

1、java服务器建立至少一种服务webservices、servlet、socket

2、客户端通过socket或者httpurlconnection的方式进行连接访问

服务端:
@Override
protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
//TODOAuto-generatedmethodstub
resp.setContentType("text/html;charset=utf-8");
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");


PrintWriterout=resp.getWriter();
//用HTML格式给浏览器返回数据
out.println("<html>");
out.println("<head>");
out.println("<title>TomcatServlet测试</title>");
out.println("</head>");
out.println("<body>");
out.println("Hello,FirstServlet!");
out.println("</body>");
out.println("</html>");
out.println("Hello,第一个Tomcat!!!");
out.close();
}
客户端:
privateStringdoGet(Stringurl){
StringresponseStr="";
try{
Stringname=nameEdit.getText().toString().trim();
Stringcode=codeEdit.getText().toString().trim();
StringgetUrl=URL+"?NAME="+name+"&"+"CODE="+code;

HttpGethttpRequest=newHttpGet(getUrl);
HttpParamsparams=newBasicHttpParams();
ConnManagerParams.setTimeout(params,1000);
HttpConnectionParams.setConnectionTimeout(params,3000);
HttpConnectionParams.setSoTimeout(params,5000);
httpRequest.setParams(params);

HttpResponsehttpResponse=newDefaultHttpClient().execute(httpRequest);
finalintret=httpResponse.getStatusLine().getStatusCode();
if(ret==HttpStatus.SC_OK){
responseStr=EntityUtils.toString(httpResponse.getEntity(),HTTP.UTF_8);
}else{
responseStr="-1";
}
}catch(ClientProtocolExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}

returnresponseStr;
}

详细的参见:http://blog.csdn.net/yanzi1225627/article/details/24882569

5. android客户端怎么与服务器交互

1、java服务器建立至少一种服务webservices、servlet、socket
2、客户端通过socket或者httpurlconnection的方式进行连接访问
服务端:
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
resp.setContentType("text/html;charset=utf-8");
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");

PrintWriter out = resp.getWriter();
//用HTML格式给浏览器返回数据
out.println("<html>");
out.println("<head>");
out.println("<title>Tomcat Servlet测试</title>");
out.println("</head>");
out.println("<body>");
out.println("Hello,First Servlet!");
out.println("</body>");
out.println("</html>");
out.println("Hello,第一个Tomcat!!!");
out.close();
}
客户端:
private String doGet(String url){
String responseStr = "";
try {
String name = nameEdit.getText().toString().trim();
String code = codeEdit.getText().toString().trim();
String getUrl = URL + "?NAME=" + name+"&"+"CODE=" + code;

HttpGet httpRequest = new HttpGet(getUrl);
HttpParams params = new BasicHttpParams();
ConnManagerParams.setTimeout(params, 1000);
HttpConnectionParams.setConnectionTimeout(params, 3000);
HttpConnectionParams.setSoTimeout(params, 5000);
httpRequest.setParams(params);

HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequest);
final int ret = httpResponse.getStatusLine().getStatusCode();
if(ret == HttpStatus.SC_OK){
responseStr = EntityUtils.toString(httpResponse.getEntity(), HTTP.UTF_8);
}else{
responseStr = "-1";
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return responseStr;
}

6. android与服务器交互的应用怎么设计

笔者以前是学的Java EE,由于项目需要要开发Android,所以临时补了一个多星期,主要是手机端和服务器端交互,双向开发的。 转载

首先在服务器端,我采用的是SSH框架,struts 2集合了JSON插件,服务器和客户端的信息交互采用的JSON来传输,由于在服务器端用了Struts 2,所以我就用装了一个JSON插件。这样,很轻易的就把服务器端的信息用JSON的形式发送到了手机端。以下是代码:

首先,在服务器端搭建好SSH框架,具体细节就不在陈述。struts.xml配置如下:

<packagename="login"extends="json-default">
<actionname="login"class="com.jclick.test.LoginAction"method="login">
<resulttype="json"><paramname="includeProperties">result</param></result>
</action>
</package>

<packagename="login"extends="json-default">
<actionname="login"class="com.jclick.test.LoginAction"method="login">
<resulttype="json"><paramname="includeProperties">result</param></result>
</action>
</package>
手机端的代码如下:

首先,手机端有一个缓存类,主要用于缓存一些手机端需要访问的数据,这样的好处是可以达达节省手机和服务器的交互,用单例实现的:

packagecom.jclick.cache;

importcom.jclick.bean.User;

publicclassCache{

privateUserUser;

privateCache(){

}
/**构造单例*/
privatestaticclassCacheHolder{
=newCache();
}
publicCachegetInstance(){
returnCacheHolder.INSTANCE;
}
publicUsergetUser(){
returnUser;
}
publicvoidsetUser(UserUser){
this.User=User;
}

}

packagecom.jclick.cache;

importcom.jclick.bean.User;

publicclassCache{

privateUserUser;

privateCache(){

}
/**构造单例*/
privatestaticclassCacheHolder{
=newCache();
}
publicCachegetInstance(){
returnCacheHolder.INSTANCE;
}
publicUsergetUser(){
returnUser;
}
publicvoidsetUser(UserUser){
this.User=User;
}

}
接着开始书写手机端的协议,用户向服务器发送请求,同时服务器反馈给手机端信息的:

packagecom.jclick.protocol;

importjava.io.BufferedReader;
importjava.io.InputStreamReader;
importjava.util.ArrayList;
importjava.util.List;

importorg.apache.http.HttpResponse;
importorg.apache.http.NameValuePair;
importorg.apache.http.client.HttpClient;
importorg.apache.http.client.entity.UrlEncodedFormEntity;
importorg.apache.http.client.methods.HttpPost;
importorg.apache.http.impl.client.DefaultHttpClient;
importorg.apache.http.message.BasicNameValuePair;
importorg.json.JSONException;
importorg.json.JSONObject;

publicclassBaseProtocol{
privateStringBuildersb=newStringBuilder();

privateHttpClienthttpClient;
privateHttpPosthttpRequest;
privateHttpResponseresponse;

privateList<NameValuePair>nameValuePair=newArrayList<NameValuePair>();

BaseProtocol(){
httpClient=newDefaultHttpClient();
}

/**
*向服务器端发送请求
*
*@paramurl
*@throwsException
*/
protectedvoidpack(Stringurl)throwsException{
httpClient=newDefaultHttpClient();
httpRequest=newHttpPost(url);

httpRequest.setEntity(newUrlEncodedFormEntity(nameValuePair));
response=httpClient.execute(httpRequest);
}

/**
*得到返回数据
*
*@paramurl
*@return
*@throwsException
*/
protectedvoidparse()throwsException{
//TODO状态处理500200
if(response.getStatusLine().getStatusCode()==200){

BufferedReaderbufferedReader2=newBufferedReader(
newInputStreamReader(response.getEntity().getContent()));
for(Strings=bufferedReader2.readLine();s!=null;s=bufferedReader2
.readLine()){
sb.append(s);
}
}
}

/**
*向服务器发送信息
*
*@paramkey
*@paramvalue
*/
publicvoidaddNameValuePair(Stringkey,Stringvalue){
nameValuePair.add(newBasicNameValuePair(key,value));
}

/**
*返回JSONObject对象数据模型
*
*@return
*@throwsJSONException
*/
publicJSONObjectgetJSON()throwsJSONException{
returnnewJSONObject(sb.toString());
}

}

packagecom.jclick.protocol;

importjava.io.BufferedReader;
importjava.io.InputStreamReader;
importjava.util.ArrayList;
importjava.util.List;

importorg.apache.http.HttpResponse;
importorg.apache.http.NameValuePair;
importorg.apache.http.client.HttpClient;
importorg.apache.http.client.entity.UrlEncodedFormEntity;
importorg.apache.http.client.methods.HttpPost;
importorg.apache.http.impl.client.DefaultHttpClient;
importorg.apache.http.message.BasicNameValuePair;
importorg.json.JSONException;
importorg.json.JSONObject;

publicclassBaseProtocol{
privateStringBuildersb=newStringBuilder();

privateHttpClienthttpClient;
privateHttpPosthttpRequest;
privateHttpResponseresponse;

privateList<NameValuePair>nameValuePair=newArrayList<NameValuePair>();

BaseProtocol(){
httpClient=newDefaultHttpClient();
}

/**
*向服务器端发送请求
*
*@paramurl
*@throwsException
*/
protectedvoidpack(Stringurl)throwsException{
httpClient=newDefaultHttpClient();
httpRequest=newHttpPost(url);

httpRequest.setEntity(newUrlEncodedFormEntity(nameValuePair));
response=httpClient.execute(httpRequest);
}

/**
*得到返回数据
*
*@paramurl
*@return
*@throwsException
*/
protectedvoidparse()throwsException{
//TODO状态处理500200
if(response.getStatusLine().getStatusCode()==200){

BufferedReaderbufferedReader2=newBufferedReader(
newInputStreamReader(response.getEntity().getContent()));
for(Strings=bufferedReader2.readLine();s!=null;s=bufferedReader2
.readLine()){
sb.append(s);
}
}
}

/**
*向服务器发送信息
*
*@paramkey
*@paramvalue
*/
publicvoidaddNameValuePair(Stringkey,Stringvalue){
nameValuePair.add(newBasicNameValuePair(key,value));
}

/**
*返回JSONObject对象数据模型
*
*@return
*@throwsJSONException
*/
publicJSONObjectgetJSON()throwsJSONException{
returnnewJSONObject(sb.toString());
}

}
接着是登陆协议,在这里我只是模拟登陆使用的一个类,仅供大家参考:

packagecom.jclick.protocol;

importorg.json.JSONObject;

importcom.jclick.bean.User;

{

privatefinalstaticStringURL="http://localhost:8080/test/login";

publicbooleancheckLogin(Userusr){
try{
pack(URL);
parse();
JSONObjectobj=this.getJSON();
if(obj.getString("result").equals("failed")){
returnfalse;
}else{
returntrue;
}
}catch(Exceptione){
e.printStackTrace();
returnfalse;
}
}

}

packagecom.jclick.protocol;

importorg.json.JSONObject;

importcom.jclick.bean.User;

{

privatefinalstaticStringURL="http://localhost:8080/test/login";

publicbooleancheckLogin(Userusr){
try{
pack(URL);
parse();
JSONObjectobj=this.getJSON();
if(obj.getString("result").equals("failed")){
returnfalse;
}else{
returntrue;
}
}catch(Exceptione){
e.printStackTrace();
returnfalse;
}
}

}
然后是User实体类,主要用于保存用户信息:

packagecom.jclick.bean;

publicclassUser{
privateStringusername;
privateStringpassword;
publicStringgetUsername(){
returnusername;
}
publicvoidsetUsername(Stringusername){
this.username=username;
}
publicStringgetPassword(){
returnpassword;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}

}

packagecom.jclick.bean;

publicclassUser{
privateStringusername;
privateStringpassword;
publicStringgetUsername(){
returnusername;
}
publicvoidsetUsername(Stringusername){
this.username=username;
}
publicStringgetPassword(){
returnpassword;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}

}
最后就是LoginActivity里边判断登陆的代码了,详细代码不再贴出来了,仅贴一个判断登陆的代码:

privatevoidcheckedData(){
username=((EditText)findViewById(R.id.username)).getText().toString();
password=((EditText)findViewById(R.id.password)).getText().toString();

Useruser=newUser();
user.setUsername(username);
user.setPassword(password);
LoginProtocollogin=newLoginProtocol();
booleanresult=login.checkLogin(user);

if(result){SpiderCache.getInstance().setUserSession(user);
Toast.makeText(getApplicationContext(),"登录成功",1000).show();
Intentintent=newIntent();
intent.setClass(LoginActivity.this,WelcomeActivity.class);
startActivity(intent);
}else{Toast.makeText(LoginActivity.this,"密码或用户名不匹配,请重新输入!",1000).show();
}
}

privatevoidcheckedData(){
username=((EditText)findViewById(R.id.username)).getText().toString();
password=((EditText)findViewById(R.id.password)).getText().toString();

Useruser=newUser();
user.setUsername(username);
user.setPassword(password);
LoginProtocollogin=newLoginProtocol();
booleanresult=login.checkLogin(user);

if(result){ SpiderCache.getInstance().setUserSession(user);
Toast.makeText(getApplicationContext(),"登录成功",1000).show();
Intentintent=newIntent();
intent.setClass(LoginActivity.this,WelcomeActivity.class);
startActivity(intent);
}else{ Toast.makeText(LoginActivity.this,"密码或用户名不匹配,请重新输入!",1000).show();
}
}
以上代码为了跟大家分享一下,感觉手机端和服务器双向开发非常过瘾。同时对Android的兴趣大大提升,它也没有我们想象中的那么难。

7. android 能和网站服务端交互么

android客户端和服务器端是基于IntentService的,具体如下:

  1. 后台使用简单的servlet,支持GET或POST。这个servlet最终返回给前台一个字符串flag,值是true或false,表示登录是否成功。

  2. 然后在安卓的ADT上创建一个安卓项目,建立两个Activity,分别作为登录界面和登录成功界面。

  3. HTTP的访问公共类,用于处理GET和POST请求。

  4. IntentService服务,用于在后台以队列方式处理耗时操作。

  5. 在AndroidManifest.xml中注册IntentService。注意uses-permission节点,为程序开启访问网络的权限。

  6. 登陆界面处理,注意按钮监听事件中,使用Intent将要传递的值传给service。接收广播类中,同样使用Intent将要传递的值传给下一个Activity。在onCreate()中,动态注册接收广播类的实例receiver。在接收广播类中,不要使用完毕后忘记注销接收器,否则会报一个Are you missing a call to unregisterReceiver()? 的异常。

8. android怎么实现post方法与服务器交互

public static String LoginOfPost(String username,String password){
HttpURLConnection conn=null;
try {
URL url=new URL("http://192.168.1.4:8080/AndroidServer/LoginServlet");
conn=(HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setConnectTimeout(10000);
conn.setReadTimeout(5000);
conn.setDoOutput(true);
//post请求的参数
String data="username="+username+"&password="+password;
OutputStream out=conn.getOutputStream();
out.write(data.getBytes());
out.flush();
out.close();

conn.connect();
int code=conn.getResponseCode();
if(code==200){
InputStream is=conn.getInputStream();
String state=getStringFromInputStream(is);
return state;
}

} catch (Exception e) {
e.printStackTrace();
}finally{
if(conn!=null){
conn.disconnect();
}
}

return null;
}

热点内容
抽盒机算法 发布:2025-01-15 18:31:07 浏览:252
万网云服务器云虚拟主机 发布:2025-01-15 18:20:58 浏览:946
手动安装交叉编译链 发布:2025-01-15 18:15:30 浏览:565
java调用clinux 发布:2025-01-15 18:13:02 浏览:294
如何给孩子配置一份保险 发布:2025-01-15 18:07:53 浏览:457
思科模拟器ftp配置 发布:2025-01-15 18:01:53 浏览:198
wd软件如何修改密码 发布:2025-01-15 17:59:57 浏览:716
公共代理服务器地址 发布:2025-01-15 17:59:53 浏览:819
android文件图片 发布:2025-01-15 17:39:44 浏览:207
linux的路径怎么写 发布:2025-01-15 17:18:49 浏览:185