下面这段代码是调用java的Service获取PDF的字节数组,但是在生成的报告中,商标符号前面多了一个字符,后来为ContentType添加了charset=utf-8,就解决了这个问题。req.ContentType = "application/x-www-form-urlencoded; charset=utf-8";
byte[] result = null;
string url = ConfigurationManager.AppSettings["iTextJavaReportService"];
int timeout = 60000;
int.TryParse(ConfigurationManager.AppSettings["iTextJavaReportServiceTimeout"], out timeout);
string dataXml = reportData != null ? reportData.CreateNavigator().OuterXml : string.Empty;
try
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
req.ContentType = "application/x-www-form-urlencoded";
req.Method = "POST";
req.Timeout = timeout;
byte[] bytesparamName = System.Text.Encoding.UTF8.GetBytes("dataXml=");
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(HttpUtility.UrlEncode(dataXml));
req.ContentLength = bytes.Length + bytesparamName.Length;
using (Stream requestStream = req.GetRequestStream())
{
requestStream.Write(bytesparamName, 0, bytesparamName.Length);
requestStream.Write(bytes, 0, bytes.Length);
}
using (WebResponse resp = (WebResponse)req.GetResponse())
{
using (BinaryReader br = newBinaryReader(resp.GetResponseStream()))
{
result = br.ReadBytes(1000000);
}
}
}
catch (Exception ex)
{
log.Error(string.Format("Error retrieving PDF Data.\n{0\n}", url), ex);
throw;
}
return result;