【发布时间】:2020-09-17 12:04:24
【问题描述】:
我尝试使用 C# 代码中的 webRequest 从下面的代码打开。我尝试了下面的代码,但我收到错误消息 “此流不支持搜索操作”。请检查下面的代码并建议如何执行此操作。
private static void DownloadCurrent() {
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("https://einvoicing
.internal.cleartax.co/v2/eInvoice/download?
irns=11eaf48a909dda520db27ff35804d4b42df2c3b6285afee8df586cc4dbd10541");
webRequest.Method = "GET";
webRequest.ContentType = "application/pdf";
webRequest.Headers.Add("owner_id", "78c6beda-54a2-11ea-b064-0af3f8b02c24");
webRequest.Headers.Add("gstin", "29AAFCD5862R000");
webRequest.Timeout = 3000;
webRequest.BeginGetResponse(new AsyncCallback(PlayResponeAsync), webRequest);
}
private static void PlayResponeAsync(IAsyncResult asyncResult) {
long total = 0;
long received = 0;
HttpWebRequest webRequest = (HttpWebRequest)asyncResult.AsyncState;
try {
using (HttpWebResponse webResponse =
(HttpWebResponse)webRequest.EndGetResponse(asyncResult)) {
byte[] buffer = new byte[1024];
FileStream fileStream = File.OpenWrite("[file name to write]");
using (Stream input = webResponse.GetResponseStream()) {
total = input.Length;
int size = input.Read(buffer, 0, buffer.Length);
while (size > 0) {
fileStream.Write(buffer, 0, size);
received += size;
size = input.Read(buffer, 0, buffer.Length);
}
}
fileStream.Flush();
fileStream.Close();
}
}
catch (Exception ex) { }
}
【问题讨论】:
-
你在哪行得到这个?
-
解决问题:是否可以选择切换到 HttpClient?
-
你能有示例代码吗?
-
@jrh 很公平;我的大脑停顿了一下;我正在考虑服务 PDF
-
看来 OP 的异常很可能出现在
total = input.Length行。这当然可以抛出这样的异常,并且在这种情况下似乎可能应该,因为除非在完全阅读之前无法确定长度,这有点会破坏它是流的意义。 (可能有一个 Content-Length 标头,但不需要。)
标签: c#