导航:首页 > 软件资讯 > app开发为什么用post

app开发为什么用post

发布时间:2022-07-08 17:22:45

Ⅰ 通过post方式进行提交数据的原理是什么

HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提交数据,本文主要讨论 POST 提交数据的几种方式。
我们知道,HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体。类似于下面这样:
<method> <request-url> <version>
<headers>
<entity-body></entity-body></headers></version></request-url></method>
协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式。实际上,开发者完全可以自己决定消息主体的格式,只要最后发送的 HTTP 请求满足上面的格式就可以。
但是,数据发送出去,还要服务端解析成功才有意义。一般服务端语言如 phppython 等,以及它们的 ramework,都内置了自动解析常见数据格式的功能。服务端通常是根据请求头(headers)中的 Content-Type
字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析。所以说到 POST 提交数据方案,包含了 Content-Type
和消息主体编码方式两部分。下面就正式开始介绍它们。

Ⅱ 给App开发restful接口是不是只能用POST

App通常用restful api跟server打交道。Rest是stateless的,也就是app不需要像browser那样用cookie来保存session, 因此用session token来标示自己就够了,session/state由api server的逻辑处理。
如果你的后端不是stateless的rest api, 那么你可能需要在app里保存session. 可以在app里嵌入webkit,用一个隐藏的browser来管理cookie session.
session 和 oauth token 并不矛盾,作为身份认证 token 安全性比session好,因为每个请求都有签名还能防止监听以及重放攻击,而session就必须靠链路层来保障通讯安全了。如上所说,如果你需要实现有状态的会话,仍然可以增加session来在服务器端保存一些状态

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则没有此限制。

Ⅳ 为什么有时候获取数据,也用的post请求

一般用post是提交数据,如果获取数据需要提交一些参数才能获取,而这些参数数据又不想暴露在地址栏,那就可以用post了。
有不少情况获取数据是需要提交参数的,比如提交账号密码,进入主页,提交一大堆查询条件返回搜索结果页……只要你想把参数放到下面去

Ⅳ android中Handler的post方法的作用是什么

在工作线程中执行耗时任务,当任务完成时,会返回UI线程,一般是更新UI。这时有两种方法可以达到目的。

一种是handler.sendMessage。发一个消息,再根据消息,执行相关任务代码。

另一种是handler.post(r)。r是要执行的任务代码。意思就是说r的代码实际是在UI线程执行的。可以写更新UI的代码。

(5)app开发为什么用post扩展阅读

一个APK文件结构为:

1、META-INF (注:Jar文件中常可以看到);

2、res (注:存放资源文件的目录) ;

3、AndroidManifest.xml (注:程序全局配置文件) ;

4、classes.dex (注:Dalvik字节码);

5、resources.arsc (注:编译后的二进制资源文件)。

Android在运行一个程序时首先需要UnZip,然后类似Symbian那样直接执行安装,和Windows Mobile中的PE文件有区别,这样做对于程序的保密性和可靠性不是很高,通过dexmp命令可以反编译,但这样做符合发展规律,微软的 Windows Gadgets或者说WPF也采用了这种构架方式。

在Android平台中dalvik vm的执行文件被打包为apk格式,最终运行时加载器会解压然后获取编译后androidmanifest.xml文件中的permission分支相关的安全访问,但仍然存在很多安全限制,如果你将apk文件传到/system/app文件夹下会发现执行是不受限制的。

参考资料来源:网络-Android



Ⅵ 安卓开发 http中get和post的区别

get就是要传递的参数在url里,
比如http://xxx.com?username=bcoder
post就是参数放在数据包里,用户不能直接看到,相对安全些

Ⅶ 在安卓开发中,我利用post

一、需要用到的场景在jQuery中使用$.post()就可以方便的发起一个post请求,在android程序中有时也要从服务器获取一些数据,就也必须得使用post请求了。二、需要用到的主要类在android中使用post请求主要要用到的类是HttpPost、HttpResponse

Ⅷ 手机app开发怎样与服务器通信

app开发分客户端和服务端开发,客户端和服务端以json格式http协议通信,服务端是操作服务器的,各种逻辑,数据处理等都是服务端的事,然后服务端再与客户端通信的。

Ⅸ android中post是什么意思

一、需要用到的场景 在jQuery中使用$.post()就可以方便的发起一个post请求,在android程序中有时也要从服务器获取一些数据,就也必须得使用post请求了。 二、需要用到的主要类 在android中使用post请求主要要用到的类是HttpPost、HttpResponse、EntityUtils 三、主要思路 1、创建HttpPost实例,设置需要请求服务器的url。 2、为创建的HttpPost实例设置参数,参数设置时使用键值对的方式用到NameValuePair类。 3、发起post请求获取返回实例HttpResponse 4、使用EntityUtils对返回值的实体进行处理(可以取得返回的字符串,也可以取得返回的byte数组) 代码也比较简单,注释也加上了,就直接贴出来了 [java] package com.justsy.url; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; 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.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; import android.app.Activity; import android.os.Bundle; public class HttpURLActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); System.out.println("start url..."); String url = "192.168.2.112:8080/JustsyApp/Applet"; // 第一步,创建HttpPost对象 HttpPost httpPost = new HttpPost(url); // 设置HTTP POST请求参数必须用NameValuePair对象 List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("action", "downloadAndroidApp")); params.add(new BasicNameValuePair("packageId", "89dcb664-50a7-4bf2-aeed-49c08af6a58a")); params.add(new BasicNameValuePair("uuid", "test_ok1")); HttpResponse httpResponse = null; try { // 设置httpPost请求参数 httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); httpResponse = new DefaultHttpClient().execute(httpPost); //System.out.println(httpResponse.getStatusLine().getStatusCode()); if (httpResponse.getStatusLine().getStatusCode() == 200) { // 第三步,使用getEntity方法活得返回结果 String result = EntityUtils.toString(httpResponse.getEntity()); System.out.println("result:" + result); T.displayToast(HttpURLActivity.this, "result:" + result); } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println("end url..."); setContentView(R.layout.main); } } ADD:使用HttpURLConnection 进行post请求 [java] String path = "192.168.2.115:8080/android-web-server/httpConnectServlet.do?PackageID=89dcb664-50a7-4bf2-aeed-49c08af6a58a"; URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setConnectTimeout(5000); System.out.println(conn.getResponseCode()); ============================================================================================================================ 通过get和post方式向服务器发送请求 首先说一下get和post的区别 get请求方式是将提交的参数拼接在url地址后面,例如/index.jsp?num=23&jjj=888; 但是这种形式对于那种比较隐私的参数是不适合的,而且参数的大小也是有限制的,一般是1K左右吧,对于上传文件 就不是很适合。 post请求方式是将参数放在消息体内将其发送到服务器,所以对大小没有限制,对于隐私的内容也比较合适。 如下Post请求 POST /LoginCheck HTTP/1.1 Accept: text/html, application/xhtml+xml, */* Referer: 192.168.2.1/login.asp Accept-Language: zh-CN User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; BOIE9;ZHCN) Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate Host: 192.168.2.1 Content-Length: 39 Connection: Keep-Alive Cache-Control: no-cache Cookie: language=en Username=admin&checkEn=0&Password=admin //参数位置 在android中用get方式向服务器提交请求: 在android模拟器中访问本机中的tomcat服务器时,注意:不能写localhost,因为模拟器是一个单独的手机系统,所以要写真是的IP地址。 否则无法访问到服务器。 //要访问的服务器地址,下面的代码是要向服务器提交用户名和密码,提交时中文先要经过URLEncoder编码,因为模拟器默认的编码格式是utf-8 //而tomcat内部默认的编码格式是ISO8859-1,所以先将参数进行编码,再向服务器提交。 private String address = "192.168.2.101:80/server/loginServlet"; public boolean get(String username, String password) throws Exception { username = URLEncoder.encode(username);// 中文数据需要经过URL编码 password = URLEncoder.encode(password); String params = "username=" + username + "&password=" + password; //将参数拼接在URl地址后面 URL url = new URL(address + "?" + params); //通过url地址打开连接 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); //设置超时时间 conn.setConnectTimeout(3000); //设置请求方式 conn.setRequestMethod("GET"); //如果返回的状态码是200,则一切Ok,连接成功。 return conn.getResponseCode() == 200; } 在android中通过post方式提交数据。 public boolean post(String username, String password) throws Exception { username = URLEncoder.encode(username);// 中文数据需要经过URL编码 password = URLEncoder.encode(password); String params = "username=" + username + "&password=" + password; byte[] data = params.getBytes(); URL url = new URL(address); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(3000); //这是请求方式为POST conn.setRequestMethod("POST"); //设置post请求必要的请求头 conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");// 请求头, 必须设置 conn.setRequestProperty("Content-Length", data.length + "");// 注意是字节长度, 不是字符长度 conn.setDoOutput(true);// 准备写出 conn.getOutputStream().write(data);// 写出数据 return conn.getResponseCode() == 200; }

Ⅹ 开源中国 app 什么时候用post方法

使用post 方式提交时不要把需要传递的参数写在URL 中,一定要使用 BasicNameValuePair 这个类来完成
创建我想发送一个类似Get 方式的一个URL ---------- http://localhost/app/camera.php?opt=discovery
在使用Post 方式提交的时候不要把后面的参数直接传递过去,一定要使用以下的方式
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://localhost/app/camera.php");
// 设置HTTP POST请求参数必须用NameValuePair对象
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("opt", "discovery"));

try {
post.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
HttpResponse response = client.execute(post);
if (response.getStatusLine().getStatusCode() == 200) {
String string = EntityUtils.toString(response.getEntity());
System.out.println(string);
//Toast.makeText(MainActivity.this, response.getStatusLine().getStatusCode(), 1).show();

} else {
//Toast.makeText(MainActivity.this, response.getStatusLine().getStatusCode(), 1).show();

}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

阅读全文

与app开发为什么用post相关的资料

热点内容
重生细胞安卓版没键盘怎么玩 浏览:992
小米nfc手机刷加密卡 浏览:288
linux如何下载文件 浏览:806
linuxrpm依赖 浏览:368
汇率pdf 浏览:353
带分数的算法思维 浏览:115
如何让服务器支持asp文件 浏览:48
python网站自动签到脚本 浏览:888
程序员和语言框架哪个重要 浏览:776
文件服务器上面有什么 浏览:383
需求不清是程序员面临的真正挑战 浏览:952
放疗有关的算法 浏览:750
java和python交互 浏览:647
贵州网络服务器机柜云主机 浏览:267
未来番禺程序员待遇 浏览:213
安卓安智部落冲突密码怎么改 浏览:648
http协议单片机 浏览:75
pdfdocument 浏览:558
gcc编译vi文件 浏览:65
安卓连airpods怎么找耳机 浏览:929