api
调用我可以获得预期的结果 - 代表pdf
或可能html
的二进制文件。我用黄色突出显示了有问题的Url部分(这确实代表了应该下载的文档编号,在父系统中是“ 130318 / HJRWIQ ”但我们不能使用{{1在网址中,因此在web-api调用中 130318%2FHJRWIQ 表示相同的内容。
现在,尝试在c#中执行相同操作,此url返回'
404未找到
我怀疑%2F以某种方式再次编码回'/'。 以下是我尝试的两种不同的方法(两者都做同样的):
c#方法下载相同的响应;
'/'
根据上述记录的异常:
下载数据异常: 远程服务器返回错误:(404)Not Found。
只需忽略字符串构建器和跟踪(这用于远程调试),因为它在线运行。
其他人之前遇到过这种情况?如何正确传递internal static string DownloadData(string resourceUrl, string authorizationApi, StringBuilder sb)
{
using (var wc = new WebClient())
{
// copy data to byte[]
wc.Headers.Add("Content-Type", "application/pdf");
wc.Headers.Add("Authorization", authorizationApi);
wc.Headers.Add("OData-MaxVersion", "4.0");
wc.Headers.Add("OData-Version", "4.0");
var data = wc.DownloadData(new Uri(@resourceUrl));
sb.AppendLine(" url used\t" + wc.BaseAddress);
sb.AppendLine(" querystring value\t" + wc.Encoding);
return Convert.ToBase64String(data);
}
}
internal static string DownloadData(string resourceUrl, string authorizationApi, ITracingService trace)
{
try
{
using (var wc = new WebClient())
{
wc.Headers.Add("ContentType", " text/plain");
wc.Headers.Add("Authorization", authorizationApi);
//wc.Headers.Add("Content-Disposition", "attachment; filename='82400200813_-doc.pdf'");
//wc.Headers.Add("Transfer-Encoding", "chunked");
return wc.DownloadString(new Uri(@resourceUrl));
}
}
catch (Exception e)
{
trace.Trace("DOWNLOAD DATA EXCEPTION: \n" + e.Message + "\n" + e.InnerException);
}
return "";
}
?
修改 即使MS再现了这个并且没有解决方法的答案 - 我将此代码移动到一个可以独立获取并将结果传回的天蓝色服务;