Michael Shang

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

下面这段代码是调用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;

posted on 2012-06-29 15:06  Michael Shang  阅读(263)  评论(0编辑  收藏  举报