`
xmgestapo
  • 浏览: 5945 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

通过httpClinet解决跨域问题

阅读更多
项目中碰到一个问题,在跨域时请求时,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();
            }
        }
    }
}
0
0
分享到:
评论

相关推荐

    httpclinet实现访问https的示例程序

    在Java中,这可以通过自定义`TrustManager`实现来完成。在提供的代码示例中,应该有一个类或方法,它创建了一个新的`SSLContext`实例,并设置了信任所有证书的`X509TrustManager`。这允许代码无视证书错误,继续建立...

    httpclient源码

    这个库广泛应用于需要与Web服务器交互的Java应用中,例如发送GET、POST请求,处理cookies,管理会话,以及处理重定向等...对于Java开发者来说,这是一个非常有价值的实践过程,有助于提高问题解决能力和系统设计能力。

    HttpClinet.rar_http://www.pudn.com_vc http_vc http

    标题中的"HttpClinet.rar_http://www.pudn.com_vc http_vc http"似乎是指一个与HTTP客户端相关的项目,可能是用VC++(Visual C++)编写的,且可能包含访问HTTP服务的功能。这个项目的源代码可能可以从www.pudn.com...

    基于HttpClient 4.3的可访问自签名HTTPS站点的新版工具类

    对于开发和测试环境,自签名证书是一个常见且经济的解决方案。 HttpClient 4.3引入了对SSL连接管理的改进,使得开发者可以更灵活地配置SSL上下文,包括处理自签名证书。下面我们将介绍如何创建一个工具类来处理此类...

    HTTPClient 的一个封装

    总结来说,HttpClient的封装是为了提高代码的可维护性和易用性,通过隐藏复杂实现细节,提供简洁的API接口,使开发更加高效。了解封装原理和实现方式对于Java网络编程非常重要,尤其是在处理大量HTTP请求的项目中。

    http客户端(win版本)

    在Windows环境中,这样的客户端通常被开发者用来测试和调试Web服务、API接口或者进行数据抓取。...在实际使用中,根据具体需求和场景,用户可以灵活运用这些功能来解决实际问题,提升开发和调试效率。

    httpclient-4.5.13-sources.jar

    httpclient-4.5.13-sources.jar

    android文件上传(客户端+服务端)

    通过使用像AsyncHttpClient这样的库,我们可以简化这个过程,同时保持应用程序的响应性。在服务端,选择合适的框架如Spring可以帮助我们轻松地处理上传的文件。在实践中,不断优化和调整这些解决方案,以适应不断...

    httpclient.jar包下载.zip

    在Java环境中,`httpclient.jar`是HttpClient库的二进制文件,通常通过Maven或Gradle等构建工具作为依赖引入项目。将`httpclient.jar`下载并添加到项目类路径中,即可使用HttpClient的功能。 总的来说,HttpClient...

    android AppWidgetProvider httpclient 扒取网页

    综合以上信息,我们可以理解这是一个Android应用,它通过HttpClinet从sgs.sgamer.com抓取新闻数据,然后在AppWidgetProvider控制的小部件上展示这些新闻的概要。同时,应用还利用Notification提醒用户有新新闻,并...

    HttpClient接口调用工具类(附带demo)

    最后,通过`HttpClient`的`execute`方法发送请求并获取响应。 2. **Get请求**: Get请求是最简单的HTTP请求,用于从服务器获取资源。HttpClient中的`HttpGet`类可以用来创建GET请求。只需提供URL作为构造函数的...

    C# post方式提交Form表单

    在实际应用中,必须考虑请求失败的情况,例如网络问题、服务器错误等。可以检查`HttpResponseMessage.IsSuccessStatusCode`属性来判断请求是否成功,如果不成功,可以根据状态码采取相应的错误处理措施。 8. **...

    HttpClientHelper 工具类

    HttpClientHelper 对这个类进行了封装,使得开发者无需直接与HttpClient接口打交道,而是通过更简洁、易用的方法调用来实现网络通信。这提高了代码的可读性和可维护性。 单例模式是软件设计模式的一种,确保一个类...

    httpcomponents-client-4.4-bin.zip

    HttpClient 提供了很多的特性,支持最新的 ...本文中使用 HttpClinet 提供的类库来访问和下载 Internet上面的网页,在后续部分会详细介绍到其提供的两种请求网络资源的方法: Get 请求和 Post 请求。来自阿帕奇官网

    org.apache.http.legacy.jar

    Android sdk 6.0下使用HttpClinet/ AsyncHttpClient使用的类库。

    JAVA爬虫项目源代码

    通过适当的异常处理,爬虫能够优雅地应对网络问题,如超时、连接失败等,提高程序的健壮性。 9. **数据存储**:爬取到的数据通常需要存储,这可能涉及数据库(如MySQL、MongoDB)或者文件系统(如CSV、JSON)。项目...

    org.apache.commons.httpclient-3.1.jar

    版本3.1是我们今天关注的重点,它是许多Java开发者解决HTTP客户端问题的首选工具。在本文中,我们将深入探讨这个库的核心特性、用途、以及如何有效地利用它来构建网络应用。 Apache Commons HttpClient 3.1是Apache...

    c++版_网页源代码获取

    5. **字符编码问题**:描述中提到的"UTF-8的编码解密尚未解决",意味着开发者可能遇到了字符编码的问题。在处理网页源代码时,尤其是从不同编码的网站抓取数据时,正确识别和转换字符编码是关键。例如,UTF-8是一种...

    .NET Core使用HttpClient进行表单提交时遇到的问题

    问题# 在开发微信支付的小微商户进件接口时,需要通过表单来上传身份证图片等数据。在微信支付接口文档也说明了,需要使用 multipart/form-data 的方式发送请求。.NET 提供了 MultipartFormDataContent 类型,帮助...

    W5100S HTTP客户端_Demo

    开发者可以参考这个示例来构建自己的网络应用,例如远程数据采集、设备监控或者物联网(IoT)解决方案。这个例程经过实际验证,适用于产品化的开发环境,对于理解和使用W5100S芯片进行网络通信的开发人员来说,是一个...

Global site tag (gtag.js) - Google Analytics