最近搞一个项目,对方是使用java开发的系统,我这边是使用php开发的系统,现在我们双方协定通过xml进行系统之间的交互,但是我现在遇到一个问题,php调用java url的时候我怎样才能将我本地写好的xml文件作为参数传给对法的程序,例如:我的url是:http://localhost:8080/pretest/main/interPhp.action?uid=xxx&filename=(我要传输的文件)。并且对方能够通过java中的File 正常接收,恳请大家帮忙看看,我这里先谢过了。

解决方案 »

  1.   

    fsockopen或者curl,把文件内容仍http body里POST过去
      

  2.   

    给你个现成的!
    /**
     * 
     * @return 
     * @param $uri string  -上传的网络地址
     * @param $postdata array -发送的参数  例:$postdata['name']='yc';
     * @param $file string -要上传的文件的物理路径
         * @param $host string -上传地址对应的host,一般不需设置
     */
    public static function do_upload($uri,$postdata,$file,$host=""){
       
            $postdata['Filedata'] = '@'.$file;//要上传的文件物理路径
     
            $ch = curl_init();// 启动一个CURL会话
            curl_setopt($ch, CURLOPT_DNS_USE_GLOBAL_CACHE,false );
            if($host!=""){
                //$header = 'Content-type: application/x-www-form-urlencoded'."\r\n".'User-Agent : PHP Script'."\r\n".'Host: '.$host."\r\n";
                $header = array("Host: {$host}");
                curl_setopt($ch, CURLOPT_HTTPHEADER, $header);//构建http头部
    }        curl_setopt($ch, CURLOPT_URL, $uri);
            curl_setopt($ch, CURLOPT_POST, 1);// 发送一个常规的Post请求
            curl_setopt($ch, CURLOPT_HEADER, 0);// 显示返回的Header区域内容
            curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata );
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//不直接输出,返回到变量,获取的信息以文件流的形式返回
            //curl_setopt($ch, CURLOPT_PROXY, "127.0.0.1:80");//设置代理服务器
            $data = curl_exec ($ch).'';
            
    }