页面树结构

版本比较

标识

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

...

代码块
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 postData = "className=" + serviceName + "&methodName=" + methodName
                    + "&params=" + paramInfo;
                byte[] data = Encoding.GetEncoding(encode).GetBytes(postData);
                req = (HttpWebRequest)HttpWebRequest.Create(requestURL);
                req.CookieContainer = cookieContainer;
                req.Method = "POST";
                req.ContentType = "application/x-www-form-urlencoded";
                req.ContentLength = data.Length;
                Stream reqStream = req.GetRequestStream();
                reqStream.Write(data, 0, data.Length);
                reqStream.Close();
                response = req.GetResponse();
                Stream stream = response.GetResponseStream();
                StreamReader sr = new StreamReader(stream, Encoding.GetEncoding(encode));
                String result = sr.ReadToEnd();
                JObject jsonObj = JObject.Parse(result);
                if ((int)jsonObj["retCode"] == 0)
                {
                    return jsonObj["result"];
                }
            }
            catch
            {
            }
            finally
            {
                response.Close();
                req.Abort();
            }
            return null;
        }
                public static void InvokeDownload(CookieContainer cookieContainer,
            String requestUrl, String method, byte[] data, Stream stream)
        {
            WebResponse wr = null;
            try
            {
                var req = (HttpWebRequest)HttpWebRequest.Create(requestUrl);
                /* 禁用缓存 */
                req.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
                req.Method = method;
                req.CookieContainer = cookieContainer;
                if (data != null)
                {
                    req.ContentType = "application/x-www-form-urlencoded";
                    Stream s = req.GetRequestStream();
                    s.Write(data, 0, data.Length);
                    s.Close();
                }
                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);
            }
        }
    }
}

...