第二十章之HttpClient请求
来源:互联网 发布:手机数据恢复方法 编辑:程序博客网 时间:2024/05/16 18:52
Http工作的大致原理:
①客户端连接到Web服务器
②发送HTTP请求
③服务器接受请求并返回HTTP响应
④释放连接TCP连接
⑤客户端浏览器解析HTML内容
⑥客户端与服务端断开连接
步骤:
①创建一个类继承Thread
List<NameValuePair> parameters=new ArrayList<NameValuePair>();
parameters.add(new BasicNameValuePair("name","张三"));
②创建HttpClien请求执行t实例 HttpClient client=new DefaultHttpClient();
③设置请求方式
HttpPost request=new HttpPost("..................");
④绑定参数
UrlEncodedFormEntity entity=new UrlEncodedFormEntity(parameters);
将绑定的参数设置到请求对象当中
request.setEntity(entity);
HttpResponse response=client.excute(request);
if(response.getStatusLine().getStatusCode() == 200){
//获取服务器端的数据
String str = EntityUtils.toString(response.getEntity());
//从消息池中获取消息对象。
Message msg = handler.obtainMessage();
//创建数据存放对象
Bundle bundle = new Bundle();
bundle.putString("name", str);
//把数据对象放到消息对象当中
msg.setData(bundle);
//将消息对象发送到消息队列
handler.sendMessage(msg);
}
上课案例
MainActivity.java
package com.ryan.lsn3_18;import java.io.IOException;import java.io.InputStream;import java.io.UnsupportedEncodingException;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;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.HttpClient;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.util.EntityUtils;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity {Button start_btn;Handler handler = new Handler(){@Overridepublic void handleMessage(Message msg) {//获取子线程传递来的数据Bundle bundle = msg.getData();//根据键获取值String name = bundle.getString("name");//更新按钮的文本start_btn.setText(name);super.handleMessage(msg);}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);initView();}public void initView(){start_btn = (Button)findViewById(R.id.start_btn);start_btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {//MyThread thread = new MyThread();//启动 线程//thread.start();//创建线程对象DemoThread thread = new DemoThread();//启动线程thread.start();}});}class DemoThread extends Thread{@Overridepublic void run() {List<NameValuePair> parameters = new ArrayList<NameValuePair>();parameters.add(new BasicNameValuePair("name", "张三"));parameters.add(new BasicNameValuePair("password", "123456"));try {//请求执行对象HttpClient client = new DefaultHttpClient();//设置请求方式HttpPost request = new HttpPost("http://10.0.2.2:8080/MyServer/DemoServlet");//绑定参数UrlEncodedFormEntity entity = new UrlEncodedFormEntity(parameters);//将绑定的参数设置到请求对象当中request.setEntity(entity);//执行请求HttpResponse response = client.execute(request);//判断连接是否成功,连接成功为200if(response.getStatusLine().getStatusCode() == 200){//获取服务器端的数据String str = EntityUtils.toString(response.getEntity());//从消息池中获取消息对象。Message msg = handler.obtainMessage();//创建数据存放对象Bundle bundle = new Bundle();bundle.putString("name", str);//把数据对象放到消息对象当中msg.setData(bundle);//将消息对象发送到消息队列handler.sendMessage(msg);}} catch (UnsupportedEncodingException e) {e.printStackTrace();} catch (ClientProtocolException e) {e.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}class MyThread extends Thread{@Overridepublic void run() {try {String stu = "";//构造请求地址URL url = new URL("http://10.0.2.2:8080/MyServer/DemoServlet");//打开连接HttpURLConnection conn = (HttpURLConnection)url.openConnection();//设置服务器可读conn.setDoInput(true);//设置连接超时conn.setConnectTimeout(5000);//设置请求方式conn.setRequestMethod("POST");//请求连接conn.connect();//判断是否连接成狗if(conn.getResponseCode() == HttpURLConnection.HTTP_OK){//获取服务器端的输入流InputStream is = conn.getInputStream();//读取服务器端的数据byte []buffer = new byte[1024];int length =0;while((length = is.read(buffer)) != -1){stu = new String(buffer, 0, length);}}//从消息池中获取消息对象。Message msg = handler.obtainMessage();//创建数据存放对象Bundle bundle = new Bundle();bundle.putString("name", stu);//把数据对象放到消息对象当中msg.setData(bundle);//将消息对象发送到消息队列handler.sendMessage(msg);} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}}
- 第二十章之HttpClient请求
- 网络请求之HttpClient
- HttpClient 之get请求
- httpClient之Post请求
- Java -- HttpClient之Get请求
- Httpclient之网络请求数据
- HttpClient之网络请求数据
- Android 之 HttpClient 网络请求
- HttpClient 之 发送Https请求
- 网络请求之HttpClient 类的使用
- android网络数据请求之HttpClient
- Android网络数据请求之HttpClient
- Anroid之HttpClient异步请求数据
- httpcomponents之httpclient发送http请求
- HttpClient简单使用之GET请求
- HttpClient简单使用之POST请求
- HttpClient之模拟post请求示例
- Java -- HttpClient之带参Post请求
- CocoStudio中的一些控件
- Android Launcher3(二) -- Drag拖动实现
- Android笔记三.不同Activity之间的传递数据(Bundle对象的使用)
- PHP文件注释标记及规范小结
- 10个调试和排错的小建议
- 第二十章之HttpClient请求
- 社交媒体中的推荐相关
- Weight Decay in neural network
- OC第一课
- 发现百度开源一个好东西,Echarts统计报表前段框架
- 浅析 Hadoop 中的数据倾斜
- 查内存泄漏的方法
- 最短路径问题
- javascript函数的内部属性arguements及agruments.callee函数