android 移动网络参数,【代码】android网络通讯之HttpClient4参数名不指定发送Post

分享给大家一篇技术文章,还有很多不足之处,欢迎吐槽!期待各位android爱好者,加入android交流群:278744577,加群请验证:qy88,共同探讨!

在HttpClient4之前都是通过List键值对的形式来向服务器传递参数

,在4.0版本中在加入了不指定参数名发送数据的形式,利用StringEntity来完成,相当于向一个流写入请求。

HttpClient4中采用ThreadSafeClientConnManager来保证线程的安全,优于2.0的MultiThreadedHttpConnectionManager类。另外Apache官方强烈推荐只使用一个HttpClient的实例,所以我们可以将以下demo方法写成单例模式。

demo将使用StringEntity来完成不指定参数名发送Post,已经采用ThreadSafeClientConnManager来保证线程的安全

public String sendToHttpClientGprs(String url,String

content) {

BufferedReader reader = null;

StringBuffer stringBuffer = null;

HttpParams httpParams = new

BasicHttpParams();

// 设置超时

ConnManagerParams.setTimeout(httpParams,

5*1000);

HttpConnectionParams.setConnectionTimeout(httpParams,

5*1000);

HttpConnectionParams.setSoTimeout(httpParams,

5*1000);

// 多线程最大连接数

ConnManagerParams.setMaxConnectionsPerRoute(httpParams, new

ConnPerRouteBean(5));

// 多线程总连接数

ConnManagerParams.setMaxTotalConnections(httpParams,

10);

// 设置异常处理机制

HttpProtocolParams.setUseExpectContinue(httpParams,

true);

// 设置是否检查旧连接

HttpConnectionParams.setStaleCheckingEnabled(httpParams,

false);

// 设置版本

HttpProtocolParams.setVersion(httpParams,

HttpVersion.HTTP_1_1);

// 设置编码

HttpProtocolParams.setContentCharset(httpParams,

HTTP.UTF_8);

// 设置重定向

HttpClientParams.setRedirecting(httpParams,

false);

// 设置userAgent

String userAgent = "Mozilla/5.0 (Windows; U; Windows

NT 5.1; zh-CN; rv:1.9.2) Gecko/20100115 Firefox/3.6";

HttpProtocolParams.setUserAgent(httpParams,

userAgent);

//设置是否延迟发送

HttpConnectionParams.setTcpNoDelay(httpParams,

true);

//设置缓存大小

HttpConnectionParams.setSocketBufferSize(httpParams,

DEFAULT_SOCKET_BUFFER_SIZE);

// 支持http与https

SchemeRegistry schemeRegistry = new

SchemeRegistry();

schemeRegistry.register(new Scheme("http",

PlainSocketFactory.getSocketFactory(), 80));

schemeRegistry.register(new Scheme("https",

SSLSocketFactory.getSocketFactory(), 443));

//ThreadSafeClientConnManager线程安全管理类

ClientConnectionManager manager = new

ThreadSafeClientConnManager(httpParams, schemeRegistry);

HttpClient  client = new

DefaultHttpClient(manager, httpParams);

//post请求

HttpPost httppost =  new

HttpPost(path);

httppost.setHeader("connection", "Keep-Alive");

httppost.setHeader("Content-Type",

"text/plain");

try {

//直接传入发送内容,不指定参数名

StringEntity myEntity = new StringEntity(content,

"UTF-8");

httppost.setEntity(myEntity);

// 发送请求

HttpResponse response =

client.execute(httppost);

Log.i("ResponseCode",

response.getStatusLine().getStatusCode() + "");

// 请求成功

if (response.getStatusLine().getStatusCode() ==

HttpStatus.SC_OK) {

reader = new BufferedReader(new

InputStreamReader(response.getEntity().getContent()));

stringBuffer = new StringBuffer();

String line = "";

while ((line = reader.readLine()) != null) {

stringBuffer.append(line);

}

}

} catch (Exception e) {

e.printStackTrace();

}  finally {

try {

// 关闭流

if (null != reader) {

reader.close();

reader = null;

}

} catch (IOException e) {

e.printStackTrace();

}

}

if (null == stringBuffer) {

return "-1";

} else {

return stringBuffer.toString();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值