问题描述
我正在发送 webRequest
并从中获得 PDF 响应,但我得到的响应未满。似乎 webResponse
只给我几行 PDF。当我在“邮递员”中发出相同的请求时,我收到了将近 900 行的响应,但是从我的代码中的 webRequest
中我只收到了几行。看起来响应突然停止并“终止”数据传输,并且没有收到完整的 pdf。当我打开文件时,它是空白的 pdf,里面没有数据。这是我的代码:
[HttpGet]
public FileContentResult GenerateBarcodePDF(string barcode)
{
var partner = _settingService.GetSetting("venisettings.username")?.Value;
var bytes = GetBarcode(barcode,partner);
var labelName = barcode + ".pdf";
var file = File(bytes,"application/pdf",labelName);
return file;
}
public byte[] GetBarcode(string barcode,string partner)
{
byte[] content = new byte[64];
WebRequest quotesrequest = WebRequest.Create("https://someurlineed");
string data = "user=myusername&pass=mypass&pack_no[]=" + barcode + "&type=a4";
byte[] dataStream = Encoding.UTF8.GetBytes(data);
quotesrequest.Method = "POST";
quotesrequest.ContentType = "application/x-www-form-urlencoded";
Stream newStream = quotesrequest.GetRequestStream();
newStream.Write(dataStream,dataStream.Length); // Send the data.
newStream.Close();
Response.Headers.Add("Content-disposition","attachment; filename=\"label.pdf\"");
Response.Headers.Add("Content-transfer-encoding","binary");
Response.Headers.Add("Content-Type","application/pdf");
Response.Headers.Add("Keep-Alive","timeout=5,max=300");
Response.Headers.Add("Connection","Keep-Alive");
WebResponse webResponse = quotesrequest.GetResponse();
Stream stream = webResponse.GetResponseStream();
StreamReader streamreader = new StreamReader(stream);
string responseFromServer = streamreader.ReadToEnd();
var plainTextBytes = Encoding.UTF8.GetBytes(responseFromServer);
var bytesINee = Convert.ToBase64String(plainTextBytes);
if (!string.IsNullOrWhiteSpace(responseFromServer))
{
content = Convert.FromBase64String(bytesINee);
return content;
throw new Exception("something bad happened");
}
return content;
}
最后我得到了空白的 PDF 文件,里面什么也没有。这是我在“邮递员”中得到的回复时间:
这就是我在“webResponse”中的内容:
也许有人可以告诉我,我错过了什么?为什么看起来 weResponse
开始接收良好的数据并突然停止:/
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)