1 httpClient封装后使用,get和post方法
package util; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import net.sf.json.JSONObject; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HTTP; /** * @Title:TestHttpClient * @Author Tony * @Date: 2014年6月21日 下午3:29:37 * @Description: httpClient使用,1 发送post请求 2 发送get请求 * */ public class TestHttpClient { /** * @Title: methodPost * @Description: httpclient方法中post提交数据的使用 * @param @return * @param @throws Exception * @return String * @throws */ public static String methodPost() throws Exception { DefaultHttpClient httpclient = new DefaultHttpClient(); // // 代理的设置 // HttpHost proxy = new HttpHost("10.60.8.20", 8080); // httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, // proxy); // 目标地址 HttpPost httppost = new HttpPost( "http://localhost:8011/testServlet"); System.out.println("请求: " + httppost.getRequestLine()); // post 参数 传递 List<BasicNameValuePair> nvps = new ArrayList<BasicNameValuePair>(); nvps.add(new BasicNameValuePair("content", "11111111")); // 参数 nvps.add(new BasicNameValuePair("path", "D:/file")); // 参数 nvps.add(new BasicNameValuePair("name", "8")); // 参数 nvps.add(new BasicNameValuePair("age", "9")); // 参数 nvps.add(new BasicNameValuePair("username", "wzt")); // 参数 httppost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); // 设置参数给Post // 执行 HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); System.out.println(response.getStatusLine()); if (entity != null) { System.out.println("Response content length: " + entity.getContentLength()); } // 显示结果 BufferedReader reader = new BufferedReader(new InputStreamReader( entity.getContent(), "UTF-8")); String line = null; while ((line = reader.readLine()) != null) { System.out.println(line); } if (entity != null) { entity.consumeContent(); } return null; } /** * @Title: methodGet * @Description: 以get方法提交数的使用 * @param @return * @param @throws Exception * @return String * @throws */ public static String methodGet() throws Exception { DefaultHttpClient httpclient = new DefaultHttpClient(); // // 代理的设置 // HttpHost proxy = new HttpHost("10.60.8.20", 8080); // httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy); // 目标地址 HttpPost httpGet = new HttpPost("http://localhost:8011/testServlet"); // 构造最简单的字符串数据 StringEntity reqEntity = new StringEntity("name=test&password=test"); // 设置类型 reqEntity.setContentType("application/x-www-form-urlencoded"); // 设置请求的数据 httpGet.setEntity(reqEntity); // 执行 HttpResponse response = httpclient.execute(httpGet); HttpEntity entity = response.getEntity(); System.out.println(response.getStatusLine()); if (entity != null) { System.out.println("Response content length: " + entity.getContentLength()); //得到返回数据的长度 } // 显示结果 BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent(), "UTF-8")); String line = null; while ((line = reader.readLine()) != null) { System.out.println(line); } if (entity != null) { entity.consumeContent(); } return null; } /** * 模拟url访问 从特定的url中获取json * * @param urlStr * @param params * @return json object ,or null if failed * 参数经过封装后传过来 ,提交为 post请求 */ private static JSONObject getJsonFromUrl(String urlStr, Map<String, String> params) { HttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(urlStr); JSONObject json = null; try { if (params != null) { Iterator<String> keys = params.keySet().iterator(); List<NameValuePair> nvps = new ArrayList<NameValuePair>(); while (keys.hasNext()) { String key = keys.next(); nvps.add(new BasicNameValuePair(key, params.get(key))); } httpPost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); } HttpResponse response = httpClient.execute(httpPost); HttpEntity entity = response.getEntity(); InputStream is = entity.getContent(); byte[] bytes = new byte[256]; StringBuffer sb = new StringBuffer(); while (is.read(bytes) > 0) { sb.append(new String(bytes)); bytes = new byte[256]; } json = JSONObject.fromObject(sb.toString()); } catch (Exception e) { e.printStackTrace(); } return json; } /** * @Title: main * @Description: 测试类 * @param @param args * @return void * @throws */ public static void main(String[] args) { try { TestHttpClient.methodGet(); // TestHttpClient.methodPost(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
2 后台接受数据的servlet
public class TestServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response) */ protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding( "utf-8"); response.setContentType("text/html;charset=utf-8"); response.setCharacterEncoding("utf-8"); String name = request.getParameter("name"); System.out.println("name 变量数据: "+name); } }
相关推荐
本示例"DefaultHttpClient_httpsDemo"聚焦于如何使用`DefaultHttpClient`来实现HTTPS请求,并且绕过安全认证,这在特定场景下可能是必要的,比如测试环境或自签名证书的应用。 首先,理解HTTPS是HTTP(超文本传输...
DefaultHttpClient使用了BasicHttpConnectionManager,而HttpClient 4.5则推荐使用PoolingHttpClientConnectionManager,它可以复用已建立的连接,提高性能。 7. **认证机制**:HttpClient支持多种认证机制,如...
DefaultHttpClient使用了单一连接模式,而HttpClient 4.x引入了多连接管理器,如PoolingHttpClientConnectionManager,提高了性能和可扩展性。 此外,提到的`log4.jar`是Apache Log4j的日志框架,它提供了丰富的...
HttpClient httpClient = new DefaultHttpClient(); ``` **3. 设置HTTP请求参数** HttpClient允许我们创建`HttpGet`或`HttpPost`对象来设置URL和其他请求参数。例如,创建一个GET请求: ```java ...
import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.params.CoreConnectionPNames; import org.apache....
使用版本锁定或依赖管理工具可以帮助控制版本冲突,同时确保所有开发者都在使用相同版本的库。 9. **配置和优化**:HttpClient有许多配置选项,如连接池大小、超时设置、重试策略等,可以根据项目需求进行调整以...
5. DefaultHttpClient类的使用 6. HttpClient的自定义 7. POST请求的发送 8. 请求头和请求体的指定 9. HTTPS服务器的交互 使用JAVA的HttpClient库来发送POST请求可以帮助我们与HTTPS服务器进行交互,但需要注意证书...
Java 使用 HttpClient 发送 POST 请求是网络编程中常见的任务,尤其在与 Web 服务进行交互时。Apache HttpClient 是一个强大的库,允许 Java 开发者轻松地执行 HTTP 请求。在这个示例中,我们将深入探讨如何使用 ...
HttpClient httpClient = new DefaultHttpClient(); ``` ## 4. 设置请求参数 创建`HttpGet`对象来表示GET请求,并设置URL: ```java HttpGet httpGet = new HttpGet("http://example.com/api/data"); ``` 这里,`...
本实例描述了Android平台下使用Apache开源项目的HttpClient访问网络的示例。分别使用HttpClient下的两个子实现类,DefaultHttpClient和AndroidHttpClient分别进行演示。
使用`DefaultHttpClient`的`execute`方法发送请求,获取`HttpResponse`,从中读取服务器的响应信息,并通过自定义的`showDialog`方法显示在对话框中。 测试这个功能时,需要确保Tomcat服务器已启动,然后在Android...
### 使用HttpClient通过GET和POST方式提交数据到服务器 在现代Web开发中,客户端与服务器之间的交互至关重要。HTTP协议是Web应用中最常用的通信协议之一,而HttpClient则是Java中用于发送HTTP请求的强大工具。本文...
2. 创建HttpClient对象:使用DefaultHttpClient对象来执行HttpGet对象。 3. 执行HttpGet对象:使用HttpClient对象执行HttpGet对象,以获取服务器中的图片资源。 4. 获取图片流:使用HttpEntity对象获取图片流。 5. ...
在使用`DefaultHttpClient`时,务必确保在完成网络操作后调用`close()`方法释放资源,否则可能导致内存泄露。为了确保这一点,`ProxyHttpClient`重写了`finalize()`方法,如果在类实例被垃圾回收前未调用`close()`,...
例如,可以使用`SingleClientConnManager`和`DefaultHttpClient`。 ```java SchemeRegistry schemeRegistry = new SchemeRegistry(); schemeRegistry.register(new Scheme("https", sslContext.getSocketFactory(),...
本篇将详细讲解如何使用`HttpClient`进行异步请求数据,并结合Android的`AsyncTask`来处理后台任务,避免阻塞UI线程。 首先,理解`HttpClient`的基本使用方法。`HttpClient`包含几个关键组件,如`HttpClient`实例、...
3. 使用`DefaultHttpClient`发送请求,并获取`HttpResponse`。 4. 解析`HttpResponse`中的JSON数据。 5. 在服务器端,使用JSON解析库解析接收到的JSON字符串,并返回响应。 在实际项目中,为了更好地管理和处理网络...
然而,如果你仍然选择使用HttpClient,务必处理好权限问题,特别是在Android 6.0(API级别23)及以上版本,需要在运行时请求`WRITE_EXTERNAL_STORAGE`和`READ_EXTERNAL_STORAGE`权限。 ImageWithProgress这个文件...