...
代码块 | ||||
---|---|---|---|---|
| ||||
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 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);
}
}
}
} |
...