<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ page import="java.io.IOException"%>
<%@ page import="org.apache.commons.httpclient.HttpClient"%>
<%@ page import="org.apache.commons.httpclient.HttpStatus"%>
<%@ page import="org.apache.commons.httpclient.methods.PostMethod"%>
<%@ page import="org.apache.commons.httpclient.methods.GetMethod"%>
<%@ page import="org.apache.commons.httpclient.methods.RequestEntity"%>
<%@ page import="org.apache.commons.httpclient.params.HttpMethodParams"%><%@ page
import="org.apache.commons.httpclient.methods.StringRequestEntity"%>
<%@ page
import="org.apache.commons.httpclient.DefaultHttpMethodRetryHandler"%>
<%@ page import="java.io.DataOutputStream"%>
<%@ page import="org.apache.commons.httpclient.Header"%><%@ page import="java.util.Enumeration"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%>
<%
           request.setCharacterEncoding("utf-8");                
           response.setContentType("text/html;charset=utf-8");
           //10.243.167.74:8082
           url="http://172.16.90.163:8080/ssoclientapp/loginInforeSys?toModel=INTERFACE&usercode=sa&Params=showContent%3DOPTPATHFIND";
           StringBuffer sb=new StringBuffer();
           HttpClient httpClient  = new HttpClient();                
          // Create a method instance.
          PostMethod  postMethod = new PostMethod(sb.toString());
          String key = null;
          Enumeration parameterNames = request.getParameterNames();
          while(parameterNames.hasMoreElements()){
               key = (String) parameterNames.nextElement();                    
               postMethod.addParameter(key, request.getParameter(key));                                
          }try{
            // Execute the method.
            int statusCode = httpClient.executeMethod(postMethod);            
            if (statusCode != HttpStatus.SC_OK)
            {
                out.print("连接管线系统出错 " + postMethod.getStatusLine());
            }            
            // Read the response body.
            byte[] responseBody = postMethod.getResponseBody();                        
                //设置返回类型
                Header header = postMethod.getResponseHeader("Content-Type");
                String contentType = header.getValue();                 
                response.setContentType(contentType);   
                //判断是否是图片
                if(contentType.indexOf("image") != -1){
                    //如果是图片则以字节流的形式返回
                    DataOutputStream dos = new DataOutputStream (response.getOutputStream()); 
                    dos.write(responseBody, 0, responseBody.length);
                    dos.flush();
                    dos.close();
                    out.clear();
                    out=pageContext.pushBody();
                  }else{
                     //如果是图片以外的格式则以字符串的形式返回
                     response.getWriter().write(new  String(responseBody,"utf-8"));
                     out.clear();
                     out=pageContext.pushBody();
                   }           
           // out.print(new String(res));           
        }
        catch (Exception e)
        {
            out.println("Fatal transport error: " + e.getMessage());
            e.printStackTrace(response.getWriter());
        }
        finally
        {
            // Release the connection.
            postMethod.releaseConnection();
            
        }
%>这是一个页面中的代码,每运行到url=""这一行就会报错,但是把url直接在IE上运行是OK的
   哪位大侠做过类似的东东。  求解答   下面是一些错误信息2011-11-2 17:34:46 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 26 in the jsp file: /test/pageRedirect.jsp
url cannot be resolved
23:            request.setCharacterEncoding("utf-8");                
24:            response.setContentType("text/html;charset=utf-8");
25:            //10.243.167.74:8082
26:            url="http://172.16.90.163:8080/ssoclientapp/loginInforeSys?toModel=INTERFACE&usercode=sa&Params=showContent%3DOPTPATHFIND";
27:            StringBuffer sb=new StringBuffer();
28:            HttpClient httpClient  = new HttpClient();                
29:           // Create a method instance.
Stacktrace:
at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:423)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:308)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:273)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.gpdi.infores.web.app.filter.PrepareRequestDataFilter.doFilter(PrepareRequestDataFilter.java:34)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:662)

解决方案 »

  1.   

    pageRedirect.jsp第26行,自己检查一下吧
      

  2.   

    java里面不能写url="...";ie会忽略错误
      

  3.   


    这个url的变量是在哪里定义的? 如:String url = "...";
      

  4.   


      各位。 这是小弟的错误.... 代码贴错了   其实整个是这样的
        request.setCharacterEncoding("utf-8");   
      response.setContentType("text/html;charset=utf-8");
      //10.243.167.74:8082
     String url="http://172.16.90.163:8080/ssoclientapp/loginInforeSys?toModel=INTERFACE&usercode=sa&Params=showContent%3DOPTPATHFIND";
      StringBuffer sb=new StringBuffer();
      HttpClient httpClient = new HttpClient();   
      // Create a method instance.
      PostMethod postMethod = new PostMethod(url);
       .....................
       .....................
    运行到这一行 PostMethod postMethod = new PostMethod(url);
      ClassNotFoundException......这类错误
      

  5.   

    PostMethod postMethod = new PostMethod(url);
    构造方法能这么写?
      

  6.   

    想想 应该是 用这URL 做一个HTTP请求把返货的记过赋值给 PostMethod 
    能看看你的构造方法具体咋写的不
      

  7.   


    大概是这个样子的.  不过我这用的是
    org.apache.commons.httpclient.methods.PostMethod
     别人也是用的这种方式去访问,只是不是同一系统. 我想他们应该是运行OK的.
       我主要的做的就是父窗体拿到子窗体中的返回值,但存在一个跨域的问题.这个页面主要是作为一个中转的
    后台处理也是相当于代理的
      

  8.   

    自己已经解决了。。   没有想到是这种问题。
      PostMethod的父类中用到了另一个jar包里的类,又看不到源代码。 失误啊失误