【发布时间】:2016-06-13 21:27:36
【问题描述】:
我正在创建一个控制台应用程序,
- 连接到供应商 API 以提取两个日期之间提交费用的凭证编号,并且
- 下载随费用提交的收据的 PDF 副本
第一部分,我工作得很好。我可以使用以下代码连接到供应商 API 并解析返回的 XML 以创建凭证编号数组(需要获取 PDF 图像):
static async Task RunAsyncCR()
{
using (var client = new HttpClient())
{
var values = new Dictionary<string, string>
{
{"un","SomeUser"},
{"pw","SomePassword"},
{"method","getVoucherInvoices"},
{"fromDate","05/30/2016"},
{"toDate", "06/13/2016"}
};
var content = new FormUrlEncodedContent(values);
Console.WriteLine("Connecting...");
var response = await client.PostAsync("https://www.chromeriver.com/receipts/doit", content);
Console.WriteLine("Connected...");
var responseString = await response.Content.ReadAsStringAsync();
char[] DelimiterChars = {'<'};
String[] xmlReturn = responseString.Split(DelimiterChars);
string[] VoucherNumber = new string[500];
int i = 0;
foreach (string s in xmlReturn)
{
if (s.Contains("voucherInvoice>") && s != "/voucherInvoice>\n ")
{
VoucherNumber[i] = s.Substring(15, 16);
i++;
}
}
Array.Resize(ref VoucherNumber, i);
是的,可能有更好的方法来做到这一点,但它可以工作并返回我期望的值。
现在,我遇到的问题是,当我连接回 API 以检索文件时,我似乎无法将文件下载到指定的文件路径。
我可以使用
连接回 API i = 0;
foreach (string x in VoucherNumber)
{
Console.WriteLine("Get receipt: " + x);
var NewValues = new Dictionary<string, string>
{
{"un","SomeUser"},
{"pw","SomePassword"},
{"method","getReceiptsWithCoverPage"},
{"voucherInvoiceForPdf", VoucherNumber[i]}
};
var NewContent = new FormUrlEncodedContent(NewValues);
var NewResponse = await client.PostAsync("https://www.chromeriver.com/receipts/doit", NewContent);
string NewResponseString = await NewResponse.Content.ReadAsStringAsync();
但我似乎无法将响应写入有效文件 (PDF)
这是我逐步执行代码时的 Autos 窗口的屏幕截图,我需要在其中下载文件:
我的问题是,从现在开始,我该如何将文件保存到我的系统中?
我尝试获取从执行Console.WriteLine(NewResponseString); 得到的编码响应,并使用System.IO.File.WriteAllLines() 方法,使用指定的文件路径/名称将其写入文件,但这会导致一个空白文件。我也花了一些时间研究 Google/Stackoverflow 的深度,但不明白如何实现我找到的结果。
我们将不胜感激。
【问题讨论】:
-
您能在此处以十六进制粘贴该流的前 20 个字节吗?
-
您有使用 Streams 的经验吗?如果不是那是你应该开始的地方。如果这不是您的问题,也许您可以澄清一下 - 您需要帮助将流保存到磁盘还是需要帮助从响应中提取流/字节数组?
-
@Igor - 我没有使用流的经验 - 这是我第一次需要连接到 API 来检索文件...
标签: c# .net asp.net-web-api