httpclient(httpclient 无响应怎么办)
本文目录
- httpclient 无响应怎么办
- 如何接收httpclient发送的请求
- 如何使用httpclient访问双向ssl认证的网站
- 如何接收httpclient 文件上传
- HttpClient和HttpURLConnection的区别
- netty httpclient和httpclient的区别
- httpclient和restclient有什么区别
- HttpClient3为什么比HttpClient4性能要好很多
httpclient 无响应怎么办
String result = ““;
DefaultHttpClient httpclient = new DefaultHttpClient();
//设置超时事件
HttpConnectionParams.setConnectionTimeout(httpclient.getParams(), Constants.CONNECTIONTIMEOUTMILLIS);
HttpConnectionParams.setSoTimeout(httpclient.getParams(), Constants.SOCKETTIMEOUTMILLIS);
try {
HttpGet httpget = new HttpGet(url);
ResponseHandler《String》 responseHandler = new BasicResponseHandler();
String responseBody = httpclient.execute(httpget, responseHandler);
result=responseBody;
logger.debug(“ end!“);
}catch(Exception e){
logger.debug(“ error:“+e);
} finally {
httpclient.getConnectionManager().shutdown();
}
return result;
如何接收httpclient发送的请求
客户端向服务器发送数据份两种情况SSL单向验证SSL双向验证
1.SSL单向验证
代码:
Java代码
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpClientParams;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class ClientSendData {
static Log log = LogFactory.getLog(ClientSendData.class);
private String Url;
// 初始化数据
public ClientSendData() {
Url = ““;
}
public String sendData(String data) {
String receivedData = null;
try {
Map paramsData = new HashMap();
paramsData.put(“data“, data);
receivedData = send(Url, paramsData);
} catch (Exception e) {
e.printStackTrace();
}
return receivedData;
}
public static String send(String url, Map paramsMap) {
String result = null;
PostMethod postMethod = null;
HttpClient httpClient = new HttpClient();
httpClient.getParams().setParameter(
HttpMethodParams.HTTP_CONTENT_CHARSET, “utf-8“);
postMethod = new PostMethod(url);
if (paramsMap != null && paramsMap.size() 》 0) {
NameValuePair;
int index = 0;
for (String key : paramsMap.keySet()) {
datas = new NameValuePair(key, paramsMap.get(key));
}
postMethod.setRequestBody(datas);
}
HttpClientParams httparams = new HttpClientParams();
httparams.setSoTimeout(60000);
postMethod.setParams(httparams);
try {
int statusCode = httpClient.executeMethod(postMethod);
if (statusCode == HttpStatus.SC_OK) {
result = postMethod.getResponseBodyAsString();
log.info(“发送功“);
} else {
log.error(“ http response status is “ + statusCode);
}
} catch (HttpException e) {
log.error(“error url=“ + url, e);
} catch (IOException e) {
log.error(“error url=“ + url, e);
} finally {
if (postMethod != null) {
postMethod.releaseConnection();
}
}
return result;
}
public static void main(String args) {
ClientSendData t = new ClientSendData();
t.sendData(“测试SSL单项连接向服务端发送数据!“);
}
}
能现异
1.java.net.ConnectException: Connection refused: connect
服务器没启
2 .javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed
服务端证书信解决办见篇文章
3.java.net.SocketException: Software caused connection abort: recv failed
由于服务端配置SSL双向认证客户端发送数据按照服务器单向认证发送即没客户端证书信息起发送给服务端
4.org.apache.commons.httpclient.NoHttpResponseException
般服务端防火墙原拦截客户端请求
另外服务端负载重现问题
5.javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
由于服务端配置SSL双向认证客户端发送数据按照服务器单向认证发送即没客户端证书信息起发送给服务端服务端验证客户端证书发现客户端没证书断握手连接
2.SSL双向验证
双向验证暂知道何用HTTPCLIENT发送数据需要双向验证发送数据参考我另外文章另外知道HTTPCLIENT何双向验证发送数据恳请指教
如何使用httpclient访问双向ssl认证的网站
首先
create a custom class from org.apache.http.conn.ssl.SSLSocketFactory
Java code?
public class MySSLSocketFactory extends SSLSocketFactory {
SSLContext sslContext = SSLContext.getInstance(“TLS“);
public MySSLSocketFactory(KeyStore truststore) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException {
super(truststore);
TrustManager tm = new X509TrustManager() {
public void checkClientTrusted(X509Certificate chain, String authType) throws CertificateException {
}
public void checkServerTrusted(X509Certificate chain, String authType) throws CertificateException {
}
public X509Certificate getAcceptedIssuers() {
return null;
}
};
sslContext.init(null, new TrustManager { tm }, null);
}
@Override
public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException, UnknownHostException {
return sslContext.getSocketFactory().createSocket(socket, host, port, autoClose);
}
@Override
public Socket createSocket() throws IOException {
return sslContext.getSocketFactory().createSocket();
}
}
然后
Java code?
//SSLSocketFactory socketFactory = new SSLSocketFactory(trustStore);
SSLSocketFactory socketFactory = new MySSLSocketFactory(trustStore);
socketFactory.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
Scheme sch = new Scheme(“https“, socketFactory, 8443);
httpclient.getConnectionManager().getSchemeRegistry().register(sch);
...
如何接收httpclient 文件上传
在struts2中结合HttpClient进行文件上传
最近遇到了用httpclient进行上传文件的问题,下面我就和大家简单的说一下:
package com.imps.action;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.List;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
public class TabinfoAction extends BaseAction
{
private File myFile;
private String myFileFileName;// 文件名
private Integer myFileFileSize;// 文件大小
private String myFileContentType;// 文件类型
public String uploadPost()
{
String posturl =“http://127.0.0.1:8080/settabimage.aspx“;
System.out.println(posturl);
String status=null;
for(int i=0;i《myFile.length;i++)
{
FileInputStream file=new FileInputStream(myFile);
InputStream in = new BufferedInputStream(file);
PostMethod post=new PostMethod(posturl);
post.setRequestBody(in);
HttpClient client = new HttpClient();
client.executeMethod(post);
String response=new String(post.getResponseBodyAsString().getBytes(“ISO-8859-1“),“UTF-8“);
post.releaseConnection();
in.close();
file.close();
}
}
public File getMyFile() {
return myFile;
}
public void setMyFile(File myFile) {
this.myFile = myFile;
}
public String getMyFileFileName() {
return myFileFileName;
}
public void setMyFileFileName(String myFileFileName) {
this.myFileFileName = myFileFileName;
}
public Integer getMyFileFileSize() {
return myFileFileSize;
}
public void setMyFileFileSize(Integer myFileFileSize) {
this.myFileFileSize = myFileFileSize;
}
public String getMyFileContentType() {
return myFileContentType;
}
public void setMyFileContentType(String myFileContentType) {
this.myFileContentType = myFileContentType;
}
千万记住不要记忘记关闭流和释放http连接
HttpClient和HttpURLConnection的区别
首先:在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能:HttpURLConnection。但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。
在Android中,androidSDK中集成了Apache的HttpClient模块,用来提供高效的、最新的、功能丰富的支持 HTTP 协议工具包,并且它支持 HTTP 协议最新的版本和建议。使用HttpClient可以快速开发出功能强大的Http程序。
其次:HttpClient是个很不错的开源框架,封装了访问
netty httpclient和httpclient的区别
netty是nio服务端客户端框架。可以快速简单的开发网络程序。
netty
httpclient和restclient有什么区别
HttpClient3为什么比HttpClient4性能要好很多
HttpClient 4:
连接超时:
httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,60000);
// 或者
HttpConnectionParams.setConnectionTimeout(params, 6000);
读取超时:
httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,60000);
// 或者
HttpConnectionParams.setSoTimeout(params, 60000);
HttpClient 3:
连接超时:
httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(60000);
读取超时:
httpClient.getHttpConnectionManager().getParams().setSoTimeout(60000);
更多文章:
authentication failure(Authentication failure是什么意思)
2024年7月1日 02:21
冒泡排序能排字符串类型的吗(字符串的冒泡排序(一定要用c语言))
2024年7月6日 17:22
lbound和ubound(VB中ubound()是什么意思啊)
2024年7月4日 19:03
堆和栈的区别js(js中String()、new String()探究)
2024年7月24日 07:32
php新闻发布管理系统(我在做一个新闻管理系统,用的是PHP,遇到点问题)
2024年9月8日 15:01
composition是啥成分(compound和composition的区别)
2024年6月19日 00:46
postgresql新手入门教程(SQL实战新手入门:创建数据库)
2024年9月8日 04:55
ae怎么加模板?现在人都用手机做视频,我想AE制作视频,求模板
2023年6月25日 16:00
oracle服务名和实例名(如何区分Oracle的数据库,实例,服务名,SID)
2024年6月26日 21:57
指针变量的自增运算(++)表示将它指向的地址值增加1个字节()?c++中的指针自增1,取地址的值会自增1吗比如:
2024年7月5日 02:50
给虚拟机提供操心系统的是哪个组件(以下哪些是云服务器ecs产品组件)
2024年6月18日 08:13
invalid file version(植物大战僵尸一直出现invalid file version怎么解决)
2024年7月21日 12:39
亚马逊雨林到底有多恐怖(为什么说亚马逊雨林是人类禁区有多恐怖)
2024年6月28日 13:05
struggle against(struggle with与stuggle against有什么区别)
2024年6月25日 06:28
索尼相机的raw是有损的,究竟和无损的raw差多少?编写一个java该程序使用drawline的方法绘制一个四行八列的表格
2023年9月27日 06:40