Android--httpclient模拟post请求和get请求

HttpClient的使用模式:

1. 创建一个HttpClent

2.实例化新的HTTP方法,比如PostMethod 或 GetMethod

3.设置HTTP参数名称/值

4.使用HttpClent执行HTTP调用

5.处理Http响应

[java] view plain copy

 print?

  1. import java.io.IOException;  
  2. import java.io.InputStream;  
  3. import java.net.URLEncoder;  
  4. import java.util.ArrayList;  
  5. import java.util.List;  
  6.   
  7. import org.apache.http.HttpEntity;  
  8. import org.apache.http.HttpResponse;  
  9. import org.apache.http.NameValuePair;  
  10. import org.apache.http.StatusLine;  
  11. import org.apache.http.client.ClientProtocolException;  
  12. import org.apache.http.client.HttpClient;  
  13. import org.apache.http.client.entity.UrlEncodedFormEntity;  
  14. import org.apache.http.client.methods.HttpGet;  
  15. import org.apache.http.client.methods.HttpPost;  
  16. import org.apache.http.impl.client.DefaultHttpClient;  
  17. import org.apache.http.message.BasicNameValuePair;  
  18.   
  19. import com.itheima.httpclient.utils.Utils;  
  20.   
  21. import android.os.Bundle;  
  22. import android.os.Handler;  
  23. import android.os.Message;  
  24. import android.app.Activity;  
  25. import android.view.Menu;  
  26. import android.view.View;  
  27. import android.widget.EditText;  
  28. import android.widget.Toast;  
  29.   
  30. public class MainActivity extends Activity {  
  31.   
  32.     Handler handler = new Handler(){  
  33.         @Override  
  34.         public void handleMessage(android.os.Message msg) {  
  35.             Toast.makeText(MainActivity.this, (String)msg.obj, 0).show();  
  36.         }  
  37.     };  
  38.     @Override  
  39.     protected void onCreate(Bundle savedInstanceState) {  
  40.         super.onCreate(savedInstanceState);  
  41.         setContentView(R.layout.activity_main);  
  42.     }  
  43.   
  44.   
  45.     //get方法  
  46.     public void get(View v){  
  47.         EditText et_name = (EditText) findViewById(R.id.et_name);  
  48.         EditText et_pass = (EditText) findViewById(R.id.et_pass);  
  49.           
  50.         final String name = et_name.getText().toString();  
  51.         final String pass = et_pass.getText().toString();  
  52.           
  53.           
  54.         Thread t = new Thread(){  
  55.             @Override  
  56.             public void run() {  
  57.                 String path = "http://192.168.13.13/Web/servlet/CheckLogin?name=" + URLEncoder.encode(name) + "&pass=" + pass;  
  58.                 //使用httpClient框架做get方式提交  
  59.                 //1.创建HttpClient对象  
  60.                 HttpClient hc = new DefaultHttpClient();  
  61.                   
  62.                 //2.创建httpGet对象,构造方法的参数就是网址  
  63.                 HttpGet hg = new HttpGet(path);  
  64.                   
  65.                 //3.使用客户端对象,把get请求对象发送出去  
  66.                 try {  
  67.                     HttpResponse hr = hc.execute(hg);  
  68.                     //拿到响应头中的状态行  
  69.                     StatusLine sl = hr.getStatusLine();  
  70.                     if(sl.getStatusCode() == 200){  
  71.                         //拿到响应头的实体  
  72.                         HttpEntity he = hr.getEntity();  
  73.                         //拿到实体中的内容,其实就是服务器返回的输入流  
  74.                         InputStream is = he.getContent();  
  75.                         String text = Utils.getTextFromStream(is);  
  76.                           
  77.                         //发送消息,让主线程刷新ui显示text  
  78.                         Message msg = handler.obtainMessage();  
  79.                         msg.obj = text;  
  80.                         handler.sendMessage(msg);  
  81.                     }  
  82.                 } catch (Exception e) {  
  83.                     // TODO Auto-generated catch block  
  84.                     e.printStackTrace();  
  85.                 }  
  86.             }  
  87.         };  
  88.         t.start();  
  89.           
  90.     }  
  91.     //post方法  
  92.     public void post(View v){  
  93.         EditText et_name = (EditText) findViewById(R.id.et_name);  
  94.         EditText et_pass = (EditText) findViewById(R.id.et_pass);  
  95.           
  96.         final String name = et_name.getText().toString();  
  97.         final String pass = et_pass.getText().toString();  
  98.           
  99.         Thread t = new Thread(){  
  100.             @Override  
  101.             public void run() {  
  102.                 String path = "http://192.168.13.13/Web/servlet/CheckLogin";  
  103.                 //1.创建客户端对象  
  104.                 HttpClient hc = new DefaultHttpClient();  
  105.                 //2.创建post请求对象  
  106.                 HttpPost hp = new HttpPost(path);  
  107.                   
  108.                 //封装form表单提交的数据  
  109.                 BasicNameValuePair bnvp = new BasicNameValuePair("name", name);  
  110.                 BasicNameValuePair bnvp2 = new BasicNameValuePair("pass", pass);  
  111.                 List<BasicNameValuePair> parameters = new ArrayList<BasicNameValuePair>();  
  112.                 //把BasicNameValuePair放入集合中  
  113.                 parameters.add(bnvp);  
  114.                 parameters.add(bnvp2);  
  115.                   
  116.                 try {  
  117.                     //要提交的数据都已经在集合中了,把集合传给实体对象  
  118.                     UrlEncodedFormEntity entity = new UrlEncodedFormEntity(parameters, "utf-8");  
  119.                     //设置post请求对象的实体,其实就是把要提交的数据封装至post请求的输出流中  
  120.                     hp.setEntity(entity);  
  121.                     //3.使用客户端发送post请求  
  122.                     HttpResponse hr = hc.execute(hp);  
  123.                     if(hr.getStatusLine().getStatusCode() == 200){  
  124.                         InputStream is = hr.getEntity().getContent();  
  125.                         String text = Utils.getTextFromStream(is);  
  126.                           
  127.                         //发送消息,让主线程刷新ui显示text  
  128.                         Message msg = handler.obtainMessage();  
  129.                         msg.obj = text;  
  130.                         handler.sendMessage(msg);  
  131.                     }  
  132.                 } catch (Exception e) {  
  133.                     // TODO Auto-generated catch block  
  134.                     e.printStackTrace();  
  135.                 }  
  136.             }  
  137.         };  
  138.         t.start();  
  139.           
  140.     }  
  141. }  

Utils方法:

[java] view plain copy

 print?

  1. import java.io.ByteArrayOutputStream;  
  2. import java.io.IOException;  
  3. import java.io.InputStream;  
  4.   
  5. public class Utils {  
  6.   
  7.     public static String getTextFromStream(InputStream is){  
  8.           
  9.         byte[] b = new byte[1024];  
  10.         int len = 0;  
  11.         ByteArrayOutputStream bos = new ByteArrayOutputStream();  
  12.         try {  
  13.             while((len = is.read(b)) != -1){  
  14.                 bos.write(b, 0, len);  
  15.             }  
  16.             String text = new String(bos.toByteArray());  
  17.             bos.close();  
  18.             return text;  
  19.         } catch (IOException e) {  
  20.             // TODO Auto-generated catch block  
  21.             e.printStackTrace();  
  22.         }  
  23.         return null;  
  24.     }  
  25. }  

转载:http://blog.csdn.net/chaoyu168/article/details/50964727

时间: 2024-11-08 19:22:54

Android--httpclient模拟post请求和get请求的相关文章

java使用httpclient模拟post请求和get请求示例_java

复制代码 代码如下: import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader; import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;import org.apache.commons.httpclient.Header;import org

通过Winform模拟post请求和get请求登录网站

引言 最近有朋友问如何用winform模拟post请求,然后登录网站,稍微想了一下,大致就是对http报文的相关信息的封装,然后请求网站登录地址的样子.发现自己的博客中对这部分只是也没总结,就借着这股风,总结一下http报文的相关知识吧. HTTP定义 超文本传输协议 (HTTP-Hypertext transfer protocol) 是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议. 这里对http的具体内容就不再介绍了,主要分析http报文信息

iOS开发网络篇—GET请求和POST请求

一.GET请求和POST请求简单说明 创建GET请求 1 // 1.设置请求路径 2 NSString *urlStr=[NSString stringWithFormat:@"http://192.168.1.53:8080/MJServer/login?username=%@&pwd=%@",self.username.text,self.pwd.text]; 3 NSURL *url=[NSURL URLWithString:urlStr]; 4 5 // 2.创建请求对

JSP、Servlet中get请求和post请求的区别总结_java

在学习JavaWeb最初的开始阶段,大家都会遇到HttpServlet中的doGet和doPost方法.前两天看<Head First Servlets & JSP>看到其中讲关于Servlet中get请求和post请求的区别,现总结如下: 1:请求数据的大小不同. 因为get请求的数据是要追加到URL中,而URL的数据量一般不能超过2K,所以用get请求的方法对数据的大小有限制.而post请求方法是把数据放在消息体中,所以理论上对数据量没有限制.(但是实际操作中也不能能太大) 2:安

java发送get请求和post请求示例_java

java向服务端发送GET和POST请求 复制代码 代码如下: package com.hongyuan.test; import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.HttpURLConnection;import java.net.URL; public class HttpCl

HttpClient3.x之Get请求和Post请求示例

HttpClient的支持在HTTP/1.1规范中定义的所有的HTTP方法:GET, HEAD, POST, PUT, DELETE, TRACE 和 OPTIONS.每有一个方法都有一个对应的类:HttpGet,HttpHead,HttpPost,HttpPut,HttpDelete,HttpTrace和HttpOptions.所有的这些类均实现了HttpUriRequest接口,故可以作为execute的执行参数使用.请求URI是能够应用请求的统一资源标识符. HTTP请求的URI包含一个协

PHP中的使用curl发送请求(GET请求和POST请求)

使用CURL发送请求的基本流程 使用CURL的PHP扩展完成一个HTTP请求的发送一般有以下几个步骤: 1.初始化连接句柄: 2.设置CURL选项: 3.执行并获取结果: 4.释放VURL连接句柄. 下面的程序片段是使用CURL发送HTTP的典型过程 // 1. 初始化 $ch = curl_init(); // 2. 设置选项,包括URL curl_setopt($ch,CURLOPT_URL,"http://www.devdo.net"); curl_setopt($ch,CURL

JavaWeb项目的中文乱码的原因以及Servlet中处理GET请求和POST请求编码过滤器

一.乱码原因 ①传输方和接收方采用的编码不一致.传输方对参数采用的是UTF-8编码而接收方却用GBK进行解析,当然是乱码. ②Tomcat服务器默认采用的ISO8859-1编码得到参数值.虽然①中采用了同样的编码方式,但经过tomcat一处理,也会出现乱码(GET方式)   二.解决办法 方法一 每次传输都手动设置编码(GET方式传输数据) 传输方 String name = URLEncoder.encode("张三","UTF-8"); String path

android 使用 模拟浏览器,无法得到返回值

问题描述 android 使用 模拟浏览器,无法得到返回值 代码如下,根据输入的url地址来返回状态码. 可是,httpconnection.getResponseCode();返回的都是200,没有实际返回访问值. 请高手指点. public String stat_is(String strurl) { HttpURLConnection httpconnection; int rcode=0; String respon = "ok"; httpconnection = null