我需要传一个URL。。参数大概有4000多字节。。请教如何压缩到2000多,或者有什么其他办法能在IE6里传递高字节的URL参数。。急!!!!!

解决方案 »

  1.   

    用post传吧,4000字节小意思Get比较浮云
      

  2.   

    如何用post呢。。我这个不是form提交的。。直接请求的。
      

  3.   

    什么叫直接请求呢?是你写Java程序还是怎么。反正GET是有大小限制的,太大当然应该使用Post
      

  4.   


    在java代码里也可以Post方式提交啊,不一定非要在页面form中才可以post
      

  5.   

    任何提交都可以设置是get还是post
      

  6.   

    你不是表单提交也是ajax呗,反正都可以用POST方式的。
      

  7.   

    就连你用HTTPClient也有POST方式。如果你自己用Socket的话,那你悲剧了。 好好看看HTTP请求格式吧。
      

  8.   

    <frame name="image" id="image" src="<%= imageAction %>" scrolling="no" title="pictureFrame" /> 
    请问如何在这里改为 POST提交 src="<%= imageAction %>" 里面是一串url地址。
      

  9.   

    用frame相对麻烦一些,如果不考虑同一用户并发访问页面的情况。将imageAction放入session中,然后
    <frame src="imageAction.jsp"这个JSP只做以下输出而已
    <form action="真正的处理jsp页面" method="post" id="myform">
    <input type="hidden" name="参数" value="参数值">
    </form>
    <script>
    document.getElementById('myform').submit();
    </script>这样实际上是使用imageAction.jsp中转了一次,生成post请求。这样可以没有大小限制。
      

  10.   

    我们就是不能用session唉怎么把这个参数传到真正处理的JSP里呢?或者怎么解决weblogic集群环境下会丢失session的问题
      

  11.   

    如果不允许使用session,也可以这样(不过WebLogic集群环境默认配置也应该使用session stick的,不应该出现会话丢失问题)
    在这个页面中增加
    <script>
    var param = {
       参数1:"参数1的值",
       参数2:"参数2的值"
    }然后在imageAction.jsp中,
    <form action="真正的处理jsp页面" method="post" id="myform">
    </form>
    <script>
    var param = window.parent.param;
    var form = document.getElementById('myform');
    for(var x in param) {
      var input = document.createElement("INPUT");
      input.type="hidden";
      input.name = x;
      input.value = param[x];
      form.appendChild(input);
    }
    form.submit();
    </script>
    其实就是通过javascript将param动态生成form,然后提示这个form就可以了
      

  12.   

    有没什么办法能压缩我那4000多字节的URL参数么,压缩一半。
      

  13.   

    刚如果用post提交后应该不在我原本的frame框架里了吧。
      

  14.   

    压缩可以使用GZIPOutputStream就可以,但是如果你URL超大,仍然可能超过ByteArrayOutputStream baos = new ByteArrayOutputStream();
    GZIPOutputStream out = new GZIPOutputStream(baos);
    out.write("11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111".getBytes());
    out.close();
    String code = new BASE64Encoder().encode(baos.toByteArray());
    //若作为URL参数,可能需要response.encodeURL编码一次
    System.out.println(code);
    解码就是相反操作了
    GZIPInputStream in = new GZIPInputStream(new ByteArrayInputStream(new BASE64Decoder().decodeBuffer(code)));
    baos = new ByteArrayOutputStream();
    byte[] b = new byte[1024];
    int readed;
    while((readed = in.read(b)) > 0)
    baos.write(b, 0, readed);
    in.close();
    System.out.println(baos.toString());
      

  15.   

    使用post不会影响原来的frame,因为没有写target默认会在那个frame中提交的
      

  16.   

    感谢你。。我试试这个post的方法,刚那个压字符串用过了。用过后就是4000+字节,我原来是个对象,然后转换成这种用来URL传递。。唉
      

  17.   

    何必传递那么长的内容 把不必要的参数都去掉不就完了么... 再者为什么不能用POST 客户端不是你写的么? 直接用SOCKET请求不就完了
      

  18.   

    hi在frame框架里的,要用src.....调用的。条件限制了。不然很好解决。
      

  19.   

    var param = window.parent.param;...这个JS调式出来是拒绝访问。。
      

  20.   

    感谢chdw,已经解决了!结贴咯
      

  21.   

    自己做一个form,然后form的post方式提交
      

  22.   

    或者ajax的post方式吧?自己定义好参数