【问题标题】:Making a request from servlet从 servlet 发出请求
【发布时间】:2012-10-05 20:09:45
【问题描述】:

我正在尝试让应用程序连接到 Google Plus API,但为此我需要对一些请求参数保密。这就是为什么我不能只发出一个简单的 ajax 请求或创建一个带有隐藏输入的表单。我的解决方案是向 servlet 发出请求,然后从那里向 HttpClient 发出另一个向 Google 的请求。 问题来了:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println(TestClass.makeRequest());
}

TestClass.makeRequest() 创建 HttpPost 对象,获取响应并返回一个字符串。

当我在服务器上运行它时,我得到了这个错误:

java.lang.ClassNotFoundException: org.apache.http.HttpEntity

我不明白为什么会这样。你能提供一个解决方案吗? 在请求中传输隐藏参数的任何其他方法都会有所帮助。

【问题讨论】:

  • 什么是TestClass?它是否引用了您的开发环境中存在但不在您的服务器上的任何库?
  • 您的 servlet 类路径中似乎缺少 httpcore-4.0.1.jar
  • @Palpatim TestClass 是我创建的一个类,目的是将所有与 HttpClient 相关的代码保存在一个地方。所有的 HttpComponents 都被添加到构建路径中。
  • @Reimeus httpcore 和 HttpComponents 项目中的所有 jar 都包含在 BuildPath 中。我使用的是 Eclipse,所以在编译时应该已经发现了任何丢失的 jar,对吧?
  • @Dragos @Reimeus 在说什么,而我要说的是,您的构建环境可能与您的运行环境不同。如果您的部署包不包含httpcore jar,那么即使编译得很好,您也会收到这些错误。查看 Google 的第一个结果以了解您的错误:stackoverflow.com/questions/9663927/…

标签: java servlets


【解决方案1】:

看起来,虽然您的构建路径中有所有必要的 jar 文件,但它们并未与您的 servlet 一起部署。这两种操作环境是不同的。

要使 3d 方库可用于您的 servlet 类,请确保 httpcore-4.0.1.jar 和所有其他依赖的 jar 部署到

WEB-INF/lib

您的网络应用程序的目录。

【讨论】:

    猜你喜欢
    • 2014-05-22
    • 1970-01-01
    • 2014-02-25
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 2011-06-20
    • 2013-10-29
    • 1970-01-01
    相关资源
    最近更新 更多