一、准备一个java端的程序
如:http://192.168.43.37:8080/T212_easyui/jsp/userAction.action?methodName=userList
这里用的是动态的IP地址,不能用localhost,动态地址会改变,可以先确认IP地址。以确保在手机和电脑都可以用。
二、通过httpclient调用java端。
1.简介httpclient
httpclient 是 Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和协议。 HtppClient来提交请求、接收响应。在API 23中,Google已经移除了移除了Apache HttpClient相关的类 ,在Android中要在build.gradle中的android {}中加上useLibrary ‘org.apache.http.legacy’,写好之后要同步 Sync show.
2.使用httpclient
HttpClient的使用步骤
(1)创建HttpClient对象
HttpClient httpClient = new DefaultHttpClient();
(2)创建HttpGet(或HttpPost)对象
HttpGet HttpGet = new HttpGet(“http://www.baidu.com“);
HttpPost httpPost = new HttpPost(“http://www.baidu.com“);
(3)添加参数(可选)
setParams(HttpParams params)//HttpGet和HttpPost共有
setEntity(HttpEntity entity)//HttpPost独有
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("age", "20"));
params.add(new BasicNameValuePair("like", "aa"));
params.add(new BasicNameValuePair("like", "bb"));
params.add(new BasicNameValuePair("like", "cc"));
params.add(new BasicNameValuePair("newsCategoryId", "1"));
HttpEntity paramEntity = new UrlEncodedFormEntity(params,"UTF-8");
httpPost.setEntity(paramEntity);
(4) 发送GET(或POST)请求,并获得响应
HttpResponse httpResponse = httpClient.execute(HttpUriRequest request);
注1:HttpUriRequest为HttpGet和HttpPost的父类
注2:需要添加允许网络访问权限,不然会报错“java.lang.SecurityException: Permission denied (missing INTERNET permission?)”
<uses-permission android:name="android.permission.INTERNET" />
(5)处理响应
响应状态码(200)
httpResponse.getStatusLine().getStatusCode()//如果返回200,那就一切正常
响应头
getAllHeaders()/getHeaders(String name)
响应内容
HttpEntity httpEntity = httpResponse.getEntity();//此对象包含服务器的响应内容
String result = EntityUtils.toString(httpEntity);
(6) httpclient的作用:在Java后台模拟浏览器访问后台的一个操作(通过代码的形式访问后台)
注意:
①如果地址错误,或服务器未开户,HttpClient这SB会等待N久(>24小时)。 所以请记得设置超时时间,所以请记得设置超时时间,所以请记得设置超时时间:另外HttpClient版本不一样,代码也不一样。下面的4.0版本的写法
httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 2000);// 连接时间
httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 2000);// 数据传输时间
②安卓端与Java端进行数据交互,是需要在安卓端打开网络权限(即手机APP要联网)
③真机需要在AndrManifest.xml中加上下面这行代码才能访问:
④客户端与Java端进行交互需要添加允许网络访问权限,不然会报错“java.lang.SecurityException: Permission denied (missing INTERNET permission?)”