Android开发之HttpClient
2015-06-24 19:17
501 查看
在JDK的java.net包提供了提供了访问HTTP协议的功能,但是功能还是远远不够,所以android引进了Apache的HttpClient。
1.HttpGet方式
2.HttpPost方式提交
package com.linxiaosheng.httpclient;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
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.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import android.app.Activity;
import android.content.Entity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import com.linxiaosheng.R;
public class MyHttpClient extends Activity implements OnClickListener{
private EditText editText1;
private EditText editText2;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.httpclient);
editText1=(EditText)findViewById(R.id.edittext1);
editText2=(EditText)findViewById(R.id.edittext2);
button=(Button)findViewById(R.id.button1);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String url="http://10.20.56.42:8082/test2/HttpClient";
Handler handler=new Handler();
new MyHttpClientThread(url,handler).start();
}
}
class MyHttpClientThread extends Thread{
private String path;
private Handler handler;
public MyHttpClientThread(String path,Handler handler){
this.path=path;
this.handler=handler;
}
public void run(){
//建立httppost对象
HttpPost httpPost=new HttpPost(path);
/**
* 定义了一个list,该list的数据类型是NameValuePair(简单名称值对节点类型),这个代码多处用于Java像url发送Post请求。在发送post请求时用该list来存放参数
*/
List<NameValuePair> list=new ArrayList<NameValuePair>();
//添加参数
list.add(new BasicNameValuePair("name", "林晓升"));
list.add(new BasicNameValuePair("age","888"));
try {
//设置编码,这里要设置utf-8的编码
HttpEntity httpEntity=new UrlEncodedFormEntity(list,"UTF-8");
httpPost.setEntity(httpEntity);
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//创建httpclient
HttpClient httpClient=new DefaultHttpClient();
try {
//发送post,返回httpresponse
HttpResponse httpResponse=httpClient.execute(httpPost);
//判断响应头是不是200
if(httpResponse.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
final String content=EntityUtils.toString(httpResponse.getEntity());
handler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println(content);
}
});
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
httpClient.getConnectionManager().shutdown();
}
}
}
1.HttpGet方式
package com.linxiaosheng.httpclient; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URL; import java.net.URLEncoder; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.view.View.OnClickListener; import android.webkit.WebView; import android.widget.Button; import android.widget.EditText; import com.linxiaosheng.R; public class MyHttpClient extends Activity implements OnClickListener{ private EditText editText1; private EditText editText2; private Button button; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.httpclient); editText1=(EditText)findViewById(R.id.edittext1); editText2=(EditText)findViewById(R.id.edittext2); button=(Button)findViewById(R.id.button1); button.setOnClickListener(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub String url=""; try { //url的中文带参需要转码 url = "http://10.20.56.42:8082/test2/HttpClient?"+"name="+URLEncoder.encode(editText1.getText().toString(),"utf-8")+"&password="+editText2.getText().toString(); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } Handler handler=new Handler(); new MyHttpClientThread(url,handler).start(); } } class MyHttpClientThread extends Thread{ private String path; private Handler handler; public MyHttpClientThread(String path,Handler handler){ this.path=path; this.handler=handler; } public void run(){ HttpPost httpGet=new HttpPost(path); HttpClient httpClient=new DefaultHttpClient(); try { HttpResponse httpResponse=httpClient.execute(httpGet); //判断响应头是不是200 if(httpResponse.getStatusLine().getStatusCode()==HttpStatus.SC_OK){ final String content=EntityUtils.toString(httpResponse.getEntity()); handler.post(new Runnable() { @Override public void run() { // TODO Auto-generated method stub System.out.println(content); } }); } } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
2.HttpPost方式提交
package com.linxiaosheng.httpclient;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
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.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import android.app.Activity;
import android.content.Entity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import com.linxiaosheng.R;
public class MyHttpClient extends Activity implements OnClickListener{
private EditText editText1;
private EditText editText2;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.httpclient);
editText1=(EditText)findViewById(R.id.edittext1);
editText2=(EditText)findViewById(R.id.edittext2);
button=(Button)findViewById(R.id.button1);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String url="http://10.20.56.42:8082/test2/HttpClient";
Handler handler=new Handler();
new MyHttpClientThread(url,handler).start();
}
}
class MyHttpClientThread extends Thread{
private String path;
private Handler handler;
public MyHttpClientThread(String path,Handler handler){
this.path=path;
this.handler=handler;
}
public void run(){
//建立httppost对象
HttpPost httpPost=new HttpPost(path);
/**
* 定义了一个list,该list的数据类型是NameValuePair(简单名称值对节点类型),这个代码多处用于Java像url发送Post请求。在发送post请求时用该list来存放参数
*/
List<NameValuePair> list=new ArrayList<NameValuePair>();
//添加参数
list.add(new BasicNameValuePair("name", "林晓升"));
list.add(new BasicNameValuePair("age","888"));
try {
//设置编码,这里要设置utf-8的编码
HttpEntity httpEntity=new UrlEncodedFormEntity(list,"UTF-8");
httpPost.setEntity(httpEntity);
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//创建httpclient
HttpClient httpClient=new DefaultHttpClient();
try {
//发送post,返回httpresponse
HttpResponse httpResponse=httpClient.execute(httpPost);
//判断响应头是不是200
if(httpResponse.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
final String content=EntityUtils.toString(httpResponse.getEntity());
handler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println(content);
}
});
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
httpClient.getConnectionManager().shutdown();
}
}
}
相关文章推荐
- Python网络编程(3)——SocketServer模块与简单并发服务器
- 一篇故事讲述了计算机网络里的基本概念:网关,DHCP,IP寻址,ARP欺骗,路由,DDOS等
- HttpClient Post请求
- 手机访问本地服务器(本地无网络情况)
- windows server 2012 iis8.0部署mvc报错:未能加载文件或程序集“System.Web.Http.WebHost
- 谢希仁计算机网络第五版课后习题答案(1~6章)
- http web serve for mercurial
- WCF webhttprequest usage
- 关于tcp中time_wait状态的4个问题
- HTTP 499 状态码 nginx下 499错误
- WCF 通过net tcp 协议 ,在服务端服务器和客户端服务器之间传输数据,注意配置事项
- iOS开发网络数据之AFNetworking使用
- Centos7.0 Vmware10.0.3 网络桥接配置
- 虚拟机安装Ubuntu的上网设置(有线网络和无线网络)
- php $_SERVER中的SERVER_NAME 和HTTP_HOST的区别
- 用fiddler2抓ios http包
- Android5.0网络之策略路由应用场景
- iOS之网络编程(POST异步)
- 什么是网络套接字(Socket)?
- Java典型应用彻查1000例:图形与网络游戏开发 PDF 扫描版[68M]