项目中碰到一个问题,在跨域时请求时,IE6和IE8都可以,但IE7时,出现问题,经过多次尝试无效后,通HTTPCLient转发和响应,解决问题,HttpClinet支持多线程时需要另外处理,可以仔细看一下API,下面提源代码
public void doUrlForward(@Param(name = "urlRequest") String urlRequest,
HttpServletRequest request, HttpServletResponse response) {
HttpClient httpClient = new HttpClient();
PostMethod method = null;
List<NameValuePair> paramList = new ArrayList<NameValuePair>();
try {
String url = URLDecoder.decode(urlRequest, "UTF-8");
method = new PostMethod(url);
// request.setCharacterEncoding("UTF-8");
Map<String, String[]> paramsMap = (Map<String, String[]>) request.getParameterMap();
Set<Entry<String, String[]>> set = paramsMap.entrySet();
Iterator<Entry<String, String[]>> it = set.iterator();
while (it.hasNext()) {
Entry<String, String[]> entry = it.next();
String key = entry.getKey();
if ("action".equalsIgnoreCase(key) || key.startsWith("event_")
|| "urlRequest".equalsIgnoreCase(key) || "urlRequest".equalsIgnoreCase(key)) {
continue;
}
// String value = request.getParameter(key);
String value = "";
if (null != entry.getValue() && entry.getValue().length > 0) {
value = entry.getValue()[0];
}
NameValuePair param = new NameValuePair(key, value);
paramList.add(param);
}
NameValuePair[] params = new NameValuePair[paramList.size()];
params = paramList.toArray(params);
method.setRequestBody(params);
int status = httpClient.executeMethod(method);
String result = null;
if (HttpStatus.SC_OK == status) {
InputStream in = method.getResponseBodyAsStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in, "UTF-8"));
result = br.readLine();
br.close();
in.close();
}
ResponseWriteUtils.writeJson(response, result);
} catch (Exception e) {
logger.error(e.toString());
ResponseWriteUtils.writeJson(response, DataUtils.exceptionToJson(e.toString(), null));
} finally {
if (null != method) {
method.releaseConnection();
}
}
}
}
分享到:
相关推荐
在Java中,这可以通过自定义`TrustManager`实现来完成。在提供的代码示例中,应该有一个类或方法,它创建了一个新的`SSLContext`实例,并设置了信任所有证书的`X509TrustManager`。这允许代码无视证书错误,继续建立...
这个库广泛应用于需要与Web服务器交互的Java应用中,例如发送GET、POST请求,处理cookies,管理会话,以及处理重定向等...对于Java开发者来说,这是一个非常有价值的实践过程,有助于提高问题解决能力和系统设计能力。
标题中的"HttpClinet.rar_http://www.pudn.com_vc http_vc http"似乎是指一个与HTTP客户端相关的项目,可能是用VC++(Visual C++)编写的,且可能包含访问HTTP服务的功能。这个项目的源代码可能可以从www.pudn.com...
对于开发和测试环境,自签名证书是一个常见且经济的解决方案。 HttpClient 4.3引入了对SSL连接管理的改进,使得开发者可以更灵活地配置SSL上下文,包括处理自签名证书。下面我们将介绍如何创建一个工具类来处理此类...
总结来说,HttpClient的封装是为了提高代码的可维护性和易用性,通过隐藏复杂实现细节,提供简洁的API接口,使开发更加高效。了解封装原理和实现方式对于Java网络编程非常重要,尤其是在处理大量HTTP请求的项目中。
在Windows环境中,这样的客户端通常被开发者用来测试和调试Web服务、API接口或者进行数据抓取。...在实际使用中,根据具体需求和场景,用户可以灵活运用这些功能来解决实际问题,提升开发和调试效率。
httpclient-4.5.13-sources.jar
在Java环境中,`httpclient.jar`是HttpClient库的二进制文件,通常通过Maven或Gradle等构建工具作为依赖引入项目。将`httpclient.jar`下载并添加到项目类路径中,即可使用HttpClient的功能。 总的来说,HttpClient...
通过使用像AsyncHttpClient这样的库,我们可以简化这个过程,同时保持应用程序的响应性。在服务端,选择合适的框架如Spring可以帮助我们轻松地处理上传的文件。在实践中,不断优化和调整这些解决方案,以适应不断...
综合以上信息,我们可以理解这是一个Android应用,它通过HttpClinet从sgs.sgamer.com抓取新闻数据,然后在AppWidgetProvider控制的小部件上展示这些新闻的概要。同时,应用还利用Notification提醒用户有新新闻,并...
最后,通过`HttpClient`的`execute`方法发送请求并获取响应。 2. **Get请求**: Get请求是最简单的HTTP请求,用于从服务器获取资源。HttpClient中的`HttpGet`类可以用来创建GET请求。只需提供URL作为构造函数的...
在实际应用中,必须考虑请求失败的情况,例如网络问题、服务器错误等。可以检查`HttpResponseMessage.IsSuccessStatusCode`属性来判断请求是否成功,如果不成功,可以根据状态码采取相应的错误处理措施。 8. **...
HttpClientHelper 对这个类进行了封装,使得开发者无需直接与HttpClient接口打交道,而是通过更简洁、易用的方法调用来实现网络通信。这提高了代码的可读性和可维护性。 单例模式是软件设计模式的一种,确保一个类...
HttpClient 提供了很多的特性,支持最新的 ...本文中使用 HttpClinet 提供的类库来访问和下载 Internet上面的网页,在后续部分会详细介绍到其提供的两种请求网络资源的方法: Get 请求和 Post 请求。来自阿帕奇官网
Android sdk 6.0下使用HttpClinet/ AsyncHttpClient使用的类库。
通过适当的异常处理,爬虫能够优雅地应对网络问题,如超时、连接失败等,提高程序的健壮性。 9. **数据存储**:爬取到的数据通常需要存储,这可能涉及数据库(如MySQL、MongoDB)或者文件系统(如CSV、JSON)。项目...
版本3.1是我们今天关注的重点,它是许多Java开发者解决HTTP客户端问题的首选工具。在本文中,我们将深入探讨这个库的核心特性、用途、以及如何有效地利用它来构建网络应用。 Apache Commons HttpClient 3.1是Apache...
5. **字符编码问题**:描述中提到的"UTF-8的编码解密尚未解决",意味着开发者可能遇到了字符编码的问题。在处理网页源代码时,尤其是从不同编码的网站抓取数据时,正确识别和转换字符编码是关键。例如,UTF-8是一种...
问题# 在开发微信支付的小微商户进件接口时,需要通过表单来上传身份证图片等数据。在微信支付接口文档也说明了,需要使用 multipart/form-data 的方式发送请求。.NET 提供了 MultipartFormDataContent 类型,帮助...
开发者可以参考这个示例来构建自己的网络应用,例如远程数据采集、设备监控或者物联网(IoT)解决方案。这个例程经过实际验证,适用于产品化的开发环境,对于理解和使用W5100S芯片进行网络通信的开发人员来说,是一个...