package com.bgxt.httpUtils; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; 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; public class httpClientUtils implements Runnable { /** * 对于Android4.0之上的环境下,不能在主线程中访问网络 所以这里另新建了一个实现了Runnable接口的Http访问类 */ private String username; private String password; public httpClientUtils(String username, String password) { // 初始化用户名和密码 this.username = username; this.password = password; } @Override public void run() { // 设置访问的Web站点 String path = "http://192.168.1.103:1231/loginas.ashx"; // 设置Http请求参数 Map<String, String> params = new HashMap<String, String>(); params.put("username", username); params.put("password", password); String result = sendHttpClientPost(path, params, "utf-8"); // 把返回的接口输出 System.out.println(result); } /** * 发送Http请求到Web站点 * * @param path * Web站点请求地址 * @param map * Http请求参数 * @param encode * 编码格式 * @return Web站点响应的字符串 */ private String sendHttpClientPost(String path, Map<String, String> map, String encode) { List<NameValuePair> list = new ArrayList<NameValuePair>(); if (map != null && !map.isEmpty()) { for (Map.Entry<String, String> entry : map.entrySet()) { // 解析Map传递的参数,使用一个键值对对象BasicNameValuePair保存。 list.add(new BasicNameValuePair(entry.getKey(), entry .getValue())); } } try { // 实现将请求 的参数封装封装到HttpEntity中。 UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list, encode); // 使用HttpPost请求方式 HttpPost httpPost = new HttpPost(path); // 设置请求参数到Form中。 httpPost.setEntity(entity); // 实例化一个默认的Http客户端 DefaultHttpClient client = new DefaultHttpClient(); // 执行请求,并获得响应数据 HttpResponse httpResponse = client.execute(httpPost); // 判断是否请求成功,为200时表示成功,其他均问有问题。 if (httpResponse.getStatusLine().getStatusCode() == 200) { // 通过HttpEntity获得响应流 InputStream inputStream = httpResponse.getEntity().getContent(); return changeInputStream(inputStream, encode); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return ""; } /** * 把Web站点返回的响应流转换为字符串格式 * * @param inputStream * 响应流 * @param encode * 编码格式 * @return 转换后的字符串 */ private String changeInputStream(InputStream inputStream, String encode) { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); byte[] data = new byte[1024]; int len = 0; String result = ""; if (inputStream != null) { try { while ((len = inputStream.read(data)) != -1) { outputStream.write(data, 0, len); } result = new String(outputStream.toByteArray(), encode); } catch (IOException e) { e.printStackTrace(); } } return result; } }
相关推荐
import org.apache.http.client.methods.HttpPost; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.impl.client.DefaultHttpClient; ...
org.apache.http jar包 import org.apache.http.Header;...import org.apache.http.client.methods.HttpPost; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.client.methods.HttpPost; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.impl.client.DefaultHttpClient; ...
import org.apache.http.client.methods.HttpPost; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.impl.client.DefaultHttpClient; ...
import org.apache.http.client.methods.HttpPost; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.impl.client.DefaultHttpClient; ...
import org.apache.http.client.methods.HttpPost; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.impl.client.DefaultHttpClient; ...
在提供的信息中,我们关注的是两个特定的模块:"org.apache.http.entity.mime" 和 "org.apache.http.legacy"。 首先,`org.apache.http.entity.mime` 是 Apache HttpClient 库的一个子模块,专门用于处理MIME(多...
1. `httpclient.jar`:这是HttpClient的主要库,提供了HTTP请求和响应处理的类和接口,包括`HttpClient`、`HttpGet`和`HttpPost`等。 2. `httpcore.jar`:这是HttpClient的核心库,包含了网络通信的基本组件,如...
HttpRequestBase是所有HTTP请求的抽象基类,比如HttpGet、HttpPost等都是其子类。HttpResponse则封装了服务器的响应,包括状态码、头部信息和响应体。 3. **HttpEntity**:表示HTTP消息实体,可以是请求或响应中的...
此包中的主要类包括`CloseableHttpClient`(负责创建和管理HTTP客户端实例)、`HttpGet`、`HttpPost`(用于构造不同类型的HTTP请求)和`CloseableHttpResponse`(用于接收和处理HTTP响应)。 `httpcomponents-core-...
org.apache.http post/get 解决中文乱码 相关的jar~~~
的引入是为了缓解这种不兼容性,它包含了`org.apache.http`包中的一些关键类,如`HttpClient`, `HttpGet`, `HttpPost`, `NameValuePair`等,使得开发者无需修改大量代码就能继续使用这些类。 在标签中提到的“jar包...
- `HttpGet`, `HttpPost`, `HttpPut`, `HttpDelete`等:代表不同的HTTP方法请求对象。 - `NameValuePair`和`BasicNameValuePair`:用于构建请求参数。 - `HttpEntity`:表示HTTP消息中的实体,可以是请求体或响应体...
1. **HTTP方法支持**:包括GET、POST、PUT、DELETE等HTTP请求方法。 2. **连接管理**:可以配置连接池来复用TCP连接,提高性能。 3. **重试和重定向策略**:自动处理HTTP状态码,如3xx重定向和错误状态码的重试。 4....
例如,`HttpClient` 是客户端 HTTP 实现的入口点,`HttpGet` 和 `HttpPost` 用于执行 GET 和 POST 请求,`HttpResponse` 用于接收服务器响应,`HttpEntity` 代表HTTP消息的实体内容,以及 `NameValuePair` 用于构建...
这个模块是Apache HttpClient的一个重要组成部分,尤其在Android开发中经常被用到,因为HttpClient提供了比Android自带的HttpURLConnection更丰富的功能和更好的性能。 MIME是一种标准,它扩展了电子邮件系统,使其...
2. `HttpGet`和`HttpPost`: 分别用于发起GET和POST请求。 3. `NameValuePair`和`BasicNameValuePair`: 用于构建请求参数。 4. `HttpResponse`: 存储服务器返回的响应数据。 5. `HttpClientContext`: 保存请求上下文...
在开发中,使用Apache HttpClient可以轻松地发送GET、POST、PUT、DELETE等各种HTTP方法的请求,并能处理包括JSON、XML在内的各种数据格式的响应。它还支持身份验证、重定向、超时设置、请求重试等高级功能。此外,...