页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

...

代码块
languagec#
linenumberstrue
using System;
using System.Net;
using System.Windows.Forms;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.IO;
namespace HttpRequestTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            CookieContainer cookieContainer = new CookieContainer();
            String serviceUrl = "http://localhost:80808060/smartbi";
            Object ret = RemoteInvoker.invokeMethod(cookieContainer, serviceUrl, "UserService", "login",  				new String[] { "admin", "manager" });
            if (ret.ToString().Equals("True"))
            {
                MessageBox.Show("登录成功");
            }
            else
            {
                MessageBox.Show("登录失败");
                return;
            }
            // 业务查询ID(对应示例库中的"根目录\功能演示\查询定义\原生SQL查询\带参数的原生SQL")
            String bizViewId = "I2c94907127855da201278df551b62602";
            // 参数ID
            String paramId = "OutputParameter.I2c94907127855da201278df551b62602.产品名称参数_列表对话框";
            // 参数真实值
            String paramValue = "牛奶,花生,饼干,猪肉,汽水";
            //
            JObject pobj = new JObject();
            pobj["id"] = paramId;
            pobj["value"] = paramValue;
            JArray arr = new JArray();
            arr.Add(pobj);
            //
            String paramsJsonArrStr = JsonConvert.SerializeObject(arr);
            // 每页行数
            int rowsPerPage = 2;
            // 是否获取总行数
            Boolean getTotalRows = true;
            JObject obj = (JObject)RemoteInvoker.invokeMethod(cookieContainer, serviceUrl, "BusinessViewService",
                "openLoadDataView", new Object[] { bizViewId, paramsJsonArrStr, rowsPerPage, getTotalRows });
            String loadDataClientId = (String)obj["clientId"];
            int totalRows = (int)obj["totalRowCount"];
            JArray fieldNames = (JArray)obj["fieldNames"];
            // JArray fieldTypes = (JArray)ret["fieldTypes"];           
            String fNames = "";
            for (int i = 0; i < fieldNames.Count; i++)
            {
                fNames += fieldNames[i].ToString() + "\t";
            }
            textBox1.AppendText(fNames + "\n");
            int pages = totalRows / rowsPerPage + (totalRows % rowsPerPage == 0 ? 0 : 1);
            for (int pageNum = 0; pageNum < pages; pageNum++)
            {
                JArray pageData = (JArray)RemoteInvoker.invokeMethod(cookieContainer, serviceUrl, "BusinessViewService",
                    "loadViewData", new Object[] { loadDataClientId, pageNum });
                for (int j = 0; j < pageData.Count; j++)
                {
                    String line = "";
                    JArray rowData = (JArray)pageData[j];
                    for (int k = 0; k < rowData.Count; k++)
                    {
                        line += (String)rowData[k] + "\t";
                    }
                    textBox1.AppendText(line + "\n");
                }
            }
            RemoteInvoker.invokeMethod(cookieContainer, serviceUrl, "BusinessViewService", "closeLoadDataView",  				new Object[] { loadDataClientId });
        }
    } }

RemoteInvoker.cs

代码块
languagec#
linenumberstrue
using System; using System.IO;
using System.Net;
using System.Text;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Net.Cache;
namespace HttpRequestTest
{private void button2_Click(object sender, EventArgs e)
        {
           public classCookieContainer RemoteInvokercookieContainer = new CookieContainer();
 {         public static String encodeserviceUrl = "UTF-8http://localhost:8060/smartbi";
        public static void setEncode(String settingEncode)Object ret = RemoteInvoker.invokeMethod(cookieContainer, serviceUrl, "UserService", "login", new String[] { "admin",   "manager" });
        encode = settingEncode;  if (ret.ToString().Equals("True"))
     }        {
public static Object invokeMethod(CookieContainer cookieContainer,            MessageBox.Show("登录成功");
      String serviceUrl, String serviceName,   }
            else
String methodName, Object[] methodParams)         {
             String paramInfo = JsonConvertMessageBox.SerializeObjectShow(methodParams"登录失败");
            return RemoteInvoker.invokeBIOfficeRMIService(cookieContainer, serviceUrl, serviceName, methodName, paramInfo) return;
        }    }
    public static Object invokeBIOfficeRMIService(CookieContainer cookieContainer,    String resid = "I2c94908d162343520116234cb928003d";
            JObject reportRet = (JObject)RemoteInvoker.invokeMethod(cookieContainer, serviceUrl, "ClientReportService", "openQuery", new String serviceUrl, String serviceName,[] { resid });
            JObject reportBean = (JObject)reportRet["reportBean"];
            String clientId = (String)reportRet["clientId"];
            String downloadURL = serviceUrl + "/vision/ExportServlet?delimiter=,&type=EXCEL2007&clientId=" + clientId;
            FileStream stream = new FileStream(@"E:\11.xlsx", FileMode.OpenOrCreate, FileAccess.Write);
            RemoteInvoker.InvokeDownload(cookieContainer, downloadURL, "post", stream);
            stream.Close();
            RemoteInvoker.invokeMethod(cookieContainer, serviceUrl, "ClientReportService", "removeFromSession", new String[] { clientId });
        }
    }
}


RemoteInvoker.cs

代码块
languagec#
linenumberstrue
using System;
using System.IO;
using System.Net;
using System.Text;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Net.Cache;
namespace HttpRequestTest
{
    public class RemoteInvoker
    {
        public static String encode = "UTF-8";
        public static void setEncode(String settingEncode)
        {
            encode = settingEncode;
        }
        public static Object invokeMethod(CookieContainer cookieContainer,
                String serviceUrl, String serviceName,
                String methodName, Object[] methodParams)
        {
            String paramInfo = JsonConvert.SerializeObject(methodParams);
            return RemoteInvoker.invokeBIOfficeRMIService(cookieContainer, serviceUrl, serviceName, methodName, paramInfo);
        }
        public static Object invokeBIOfficeRMIService(CookieContainer cookieContainer,
            String serviceUrl, String serviceName,
            String methodName, String paramInfo)
        {
            WebResponse response = null;
            HttpWebRequest req = null;
            try
            {
                byte[] bytes = Encoding.GetEncoding(encode).GetBytes(paramInfo);
                String temp = Encoding.Default.GetString(bytes);
                String requestURL = serviceUrl + "/vision/RMIServlet";
                String methodName, String paramInfo)
    postData = "className=" + serviceName + "&methodName=" + methodName
   {             WebResponse response = null; + "&params=" + paramInfo;
        HttpWebRequest req = null;     byte[] data = Encoding.GetEncoding(encode).GetBytes(postData);
    try            req {
= (HttpWebRequest)HttpWebRequest.Create(requestURL);
               byte[] bytes req.CookieContainer = Encoding.GetEncoding(encode).GetBytes(paramInfo)cookieContainer;
                Stringreq.Method temp = Encoding.Default.GetString(bytes)"POST";
                String requestURLreq.ContentType = serviceUrl + "/vision/RMIServletapplication/x-www-form-urlencoded";
                String postDatareq.ContentLength = "className=" + serviceName + "&methodName=" + methodNamedata.Length;
                Stream      + "&params=" + paramInforeqStream = req.GetRequestStream();
                byte[] data = Encoding.GetEncoding(encode).GetBytes(postDatareqStream.Write(data, 0, data.Length);
                req = (HttpWebRequest)HttpWebRequest.Create(requestURLreqStream.Close();
                req.CookieContainerresponse = cookieContainerreq.GetResponse();
                Stream req.Methodstream = "POST";response.GetResponseStream();
                StreamReader req.ContentTypesr = "application/x-www-form-urlencoded"; new StreamReader(stream, Encoding.GetEncoding(encode));
                String req.ContentLengthresult = datasr.LengthReadToEnd();
                StreamJObject reqStreamjsonObj = reqJObject.GetRequestStreamParse(result);
                if reqStream.Write(data, 0, data.Length);
   ((int)jsonObj["retCode"] == 0)
            reqStream.Close();    {
            response = req.GetResponse();      return jsonObj["result"];
         Stream stream = response.GetResponseStream();    }
            StreamReader}
sr = new StreamReader(stream, Encoding.GetEncoding(encode));        catch
        String result = sr.ReadToEnd(); {
            }
  JObject jsonObj = JObject.Parse(result);       finally
         if ((int)jsonObj["retCode"] == 0)   {
                response.Close();
{                req.Abort();
    return jsonObj["result"];       }
         }   return null;
        }
        public static void  catchInvokeDownload(CookieContainer cookieContainer,
            String requestUrl, String method, byte[] data, {Stream stream)
        {
  }          WebResponse wr = finallynull;
            {try
            {
   response.Close();             var req   req.Abort(= (HttpWebRequest)HttpWebRequest.Create(requestUrl);
            }    /* 禁用缓存 */
      return null;         }req.CachePolicy =      new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
 public static void InvokeBIOfficeDownload(CookieContainer cookieContainer,           req.Method = Stringmethod;
requestUrl, String method, Stream stream)         {   req.CookieContainer = cookieContainer;
       WebResponse wr = null;      if (data != null)
   try             {
                var    req.ContentType = (HttpWebRequest)HttpWebRequest.Create(requestUrl)"application/x-www-form-urlencoded";
                /* 禁用缓存 */    Stream s = req.GetRequestStream();
                 req.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStores.Write(data, 0, data.Length);
                req.Method = method;  s.Close();
              req.CookieContainer = cookieContainer;}
                wr = req.GetResponse();
                CopyStream(wr.GetResponseStream(), stream);
                req.Abort();
            }
            finally
            {
                try
                {
                    wr.Close();
                }
                catch
                {
                }
            }
        }

        public static void CopyStream(Stream input, Stream output)
        {
            byte[] buffer = new byte[32768];
            while (true)
            {
                int read = input.Read(buffer, 0, buffer.Length);
                if (read <= 0)
                    return;
                output.Write(buffer, 0, read);
            }
        }
    }
}

 

2、运行效果:

Image Removed

Image Removed

 Image Added

3、示例工程(C#)源码:

HttpRequestTest.rar