Weblogic下的Post请求中无法传递请求参数

1、本地开发测试的时候都是用tomcat6  线网部署的使用weblogic10.3
2、本地测试的时候没有显示调用connect() 方法,测试一切正常
        POST 消息体中的请求数据均携带,对接的接口也获取到数据

     而到线网的时候(通过抓包显示)
    
      POST 消息体中的请求数据为空,对接的接口没有获取到数据

3、显示调用 HttpURLConnection 的 connect() 方法后重新在weblogic下部署后则正常。。。:funk:


以下为部分代码

HttpURLConnection urlConnection = null;
        OutputStream out = null;

        try
        {
            URL url = new URL(urlString);
            urlConnection = (HttpURLConnection) url.openConnection();

            // 设置超时时间20秒
            urlConnection.setConnectTimeout(Integer.valueOf(CONNECT_TIMEOUT));

            urlConnection.setRequestMethod(POST_METHOD);
            urlConnection.setRequestProperty("Content-Type",
                    "application/x-www-form-urlencoded;charset=UTF-8");
            urlConnection.setDoOutput(true);
            urlConnection.setDoInput(true);
            urlConnection.setUseCaches(false);
            urlConnection.connect(); //是否需要显示调用 tomcat 未调用  weblogic 需要调用
以上转自http://bbs.51cto.com/thread-1043179-1-1.html;
我在发布项目时候也发生了这样的事情,项目分为两个,一个作为前台,一个作为后台,之间依靠JSON通过发送Http协议完成数据的交互。于是,具体请求可以发送也可以接收但是无法找到请求参数,在本地的Tomcat服务器下没有这样的情况。具体原因:在tomcat下openConnection返回的是HttpsURLConnection,在weblogic下openConnection返回的是SOAPHttpsURLConnection,两者均为HttpURLConnection的子类,但是它们是有区别的,前者会在你getOutPutStream时候会隐含的调用connect()方法,而在后者没有,所以在weblogic下打开输出流之后不会将调用connect()方法,导致在weblogic下无法传递参数。个人见解,时间有限没有去真正查看底层代码。有错误望指正!

猜你喜欢

转载自equals.iteye.com/blog/2165826