Android中"get","post"请求的其中三种常用数据提交方式

一.使用HttpURLConnection提交数据

"get"请求

代码:

String path = "http://地址?数据1名字=" + URLEncoder.encode(数据1,"utf-8") + "&数据2名字=" +URLEncoder.encode(数据2,"utf-8");

URL url = new URL(path);

HttpURLConnection conn = (HttpURLConnection)url.openConnection();

//这里设置请求方式要写为大写

conn.setRequestMethod("GET");

conn.setConnectTimeout(5000);

int code = conn.getResponseCode();

if(code == 200){

  InputStream is = conn.getInputStream();

  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  int len = -1;
  byte[] buffer = new byte[1024];
  while ((len = is.read(buffer)) != -1) {
    baos.write(buffer, 0, len);
  }
  is.close();

  //这样就得到服务器返回的数据了
  result = baos.toString();

}

"post"请求

URL url = new URL(path);

HttpURLConnection conn = (HttpURLConnection)url.openConnection();

//1这里设置请求方式要写为大写

conn.setRequestMethod("POST");

//设置响应时长

conn.setConnectTimeout(5000);

//2设置http请求数据的类型为表单类型

conn.setRequestProperty("Content-type","application/x-www-form-urlencoded");

String data = "数据1名字=" +URLEncoder.encode(数据1,"utf-8") + "&数据2名字=" + URLEncoder.encode(数据2,"utf-8");

//3设置给服务器写的数据的长度

conn.setRequestProperty("Content-Length",String.valueOf(data.length()));

//4指定要给服务器写数据

conn.setDoOutput(true);

//5开始向服务器写数据

conn.getOutputStream().write(data.getBytes);

int code = conn.getResponseCode();

if(code == 200){

  InputStream is = conn.getInputStream();

  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  int len = -1;
  byte[] buffer = new byte[1024];
  while ((len = is.read(buffer)) != -1) {
    baos.write(buffer, 0, len);
  }
  is.close();

  //注意:这里回流的编码默认是"utf-8"的

  result = baos.toString();

}

二.使用HttpClient提交数据

注:HttpClient会被内置到Android SDK中,可以不添加任何额外jar包直接使用,将文件从com文件夹复制粘贴到项目下就可以使用了

Get方式:

String path = "http://地址?数据1名字=" + URLEncoder.encode(数据1,"utf-8") + "&数据2名字" + URLEncoder.encode(数据2,"utf-8");

//可以将其过程理解为用户浏览器操作

//1打开浏览器

HttpClient client = new DefaultHttpClient();

//2输入地址

HttpGet httpGet = new HttpGet(path);

//3敲回车

HttpResponse response = client.execute(httpGet);

//获取状态码

int code = response.getStatusLine().getStatusCode();

Post方式:

String path = "http://地址";

//1打开浏览器

HttpClient client = new DefaultHttpClient();

//2输入地址

HttpPost httpPost = new HttpPost(path);

List<NameValuePair> parameters = new ArrayList<NameValuePair>();

parameters.add(new BasicNameValuePair("数据1名字",数据1));

parameters.add(new BasicNameValuePair("数据2名字",数据1));

httpPost.setEntity(new UrlEncodedFormEntity(parameters,"utf-8"));

//3敲回车

HttpResponse response = client.execute(httpPost);

//4获取状态码

int code = response.getStatusLine().getStatusCode();

三.使用AsyncHttpClient框架提交数据

该源码可以在网上下载

将下载好的的源码中src目录中源码拷贝到自己的工程的src目录下

GET方式:

//请求路径

String path = "http://地址?数据1名字=" + URLEncoder.encode(数据1) + "&数据2名字" + URLEncoder.encode(数据2);

AsyncHttpClient client = new AsyncHttpClient();

client.get(path,new AsyncHttpResponseHandler() {

  public void onSuccess(int statusCode,Header[]headers,byte[]responseBody){

  //请求成功

    new String(responseBody);//返回的数据

}

  public void onFailure(int statusCode,Header[]headers,byte[]responseBody,Throwable error) {

  //请求失败

    String(responseBody);

  }

});

POST方式:

String path = "http://地址";

AsyncHttpClient client = new AsyncHttpClient();

RequestParams params = new RequestParams();

params.put("数据1名字",数据1);

params.put("数据2名字",数据2);

client.post(path,params,new AsyncHttpResponseHandler() {

  public void onSuccess(int statusCode,Header[]headers,byte[]responseBody){

  //请求成功

    new String(responseBody);//返回的数据

}

  public void onFailure(int statusCode,Header[]headers,byte[]responseBody,Throwable error) {

  //请求失败

    String(responseBody);

  }

});

以上就是基本代码了,写的不好希望大家不要见怪,也希望和大家多多交流.

时间: 2024-12-24 04:24:01

Android中"get","post"请求的其中三种常用数据提交方式的相关文章

抓包工具Fidder详解(主要来抓取Android中app的请求)

抓包工具Fidder详解(主要来抓取Android中app的请求) 今天闲着没吊事,来写一篇关于怎么抓取Android中的app数据包?工欲行其事,必先利其器,上网google了一下,发现了一款神器:Fiddler,这个貌似是所有软件开发者必备神器呀!这款工具不仅可以抓取PC上开发web时候的数据包,而且可以抓取移动端(Android,Iphone,WindowPhone等都可以),太强大了,以前搞web的时候,知道有一款叫做HttpWatch工具,可以抓取web的请求数据包的,但是和这款神器来

(转)抓包工具Fidder详解(主要来抓取Android中app的请求)

今天闲着没吊事,来写一篇关于怎么抓取Android中的app数据包?工欲行其事,必先利其器,上网google了一下,发现了一款神器:Fiddler,这个貌似是所有软件开发者必备神器呀!这款工具不仅可以抓取PC上开发web时候的数据包,而且可以抓取移动端(Android,Iphone,WindowPhone等都可以),太强大了,以前搞web的时候,知道有一款叫做HttpWatch工具,可以抓取web的请求数据包的,但是和这款神器来比较,那都弱爆了!吹到现在都是无用的,下面就来看看实例吧!开始兴奋吧

Android中解析网络请求的URL

最近正在做Android网络应用的开发,使用了android网络请求方面的知识,现在向大家介绍网络请求方面的知识,我们知道android中向服务器端发送一个请求,(这就是我们通常所说的POST请求),我们要发送一个完整的URL,然后服务器端接收到这个URL,对这个URL进行特定的解析,就是对URL进行解析,转化为JSON数据,然后,我们只要处理这个JSON数据就可以了. 我现在就用我的项目实例来体现解析URL的过程: 1.组装URL的过程: private String getOrderPayU

Springmvc中 同步/异步请求参数的传递以及数据的返回

注意: 这里的返回就是返回到jsp页面 **** controller接收前台数据的方式,以及将处理后的model 传向前台***** 1.前台传递数据的接受:传的属性名和javabean的属性相同 (1).使用基本类型,或引用类型进行接受: @RequestMapping(value="/select") PublicString  select(String name,int age,Model model){ // 这样这里的name,age 就是我们前台传递的参数,也是我们Ja

Android中通过get请求获取InputStream

public InputStream getStream(String url) throws IllegalStateException, IOException { HttpResponse response = null; int timeoutConnection = 10000; int timeoutSocket = 10000; HttpParams httpParameters = new BasicHttpParams(); HttpConnectionParams.setCo

android 中使用View的消息队列api更新数据

基本上只要继承自View的控件,都具有消息队列或者handler的一些处理方法,下面是一些handler方法以及被View封装了的方法,其底层用的基本都是handler的api. 我么开一下postDelay的定义 android.view.View  public boolean postDelayed(Runnable action, long delayMillis) {         final AttachInfo attachInfo = mAttachInfo;         

Android中使用BufferedReader.readline阻塞读取不到数据,但是ready返回true

通过socket测试工具在电脑上发送消息,Android真机可以收到响应BufferedReader.ready()返回true,但是readline却一直阻塞. 原因:readline()只有在遇到换行符的时候才会结束,因为发消息的时候加一个换行符即可. 测试工具下载地址:http://files.cnblogs.com/files/feijian/SocketTool.rar 附上我的socket客户端代码: public class QpushClient implements Runna

Android中Service通信(一)——启动Service并传递数据

启动Service并传递数据的小实例(通过外界与服务进行通信): 1.activity_main.xml: <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:text="默认信息" android:id="@+id/etData"/> <Button android:text=&

Android中使用http协议访问网络

HTTP协议的工作原理:客户端向服务器端发送http请求,服务器端收到请求后返回一下数据给客户端,客户端接受消息并进行解析. 在Android中发送http请求的方式有两种,第一种是通过HttpURLConnection的方式,第二种是通过HttpClient的方式. 通过HttpURLConnection的方式发送http请求 通常分为以下5个步骤: 1.获取HttpURLConnection实例对象.先new一个URL实例,然后调用该对象的openConnection()方法. 2.设置ht