...
代码块 | ||||
---|---|---|---|---|
| ||||
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 + "¶ms=" + 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 InvokeBIOfficeDownload(CookieContainer cookieContainer, String requestUrl, String method, Stream stream) { WebResponse wr = null; try { var req = (HttpWebRequest)HttpWebRequest.Create(requestUrl); /* 禁用缓存 */ req.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore); req.Method = method; 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、运行效果:
3、示例工程(C#)源码: