对外部 REST 服务的请求进行身份验证
本文关键字:身份验证 请求 REST 服务 对外部 | 更新日期: 2023-09-27 18:36:08
我对Web开发真的很陌生,我对Web的主要概念并没有很好的掌握。但是,我的任务是编写一个 asp.net 应用程序,用户可以在其中通过查询外部 RESTful Web 服务来搜索文档。对此 REST 服务的请求必须通过 HTTP 基本身份验证进行身份验证。
到目前为止一切顺利,我已经能够使用 HttpWebRequest
和 HttpWebResponse
查询服务,将编码的 user:pass 添加到请求的授权标头,反序列化 Json 响应并生成一个字符串列表,其中包含搜索产生的 pdf 文档的 url。
所以现在我以编程方式将HyperLink
元素添加到具有以下 url 的页面中:
foreach (string url in urls) {
HyperLink link = new HyperLink();
link.Text = url;
link.NavigateUrl = url;
Page.Controls.Add(link);
}
问题是对这些文档的请求必须使用与查询 REST 服务时相同的基本 http 身份验证和相同的 user:pass 进行授权,并且由于我只是创建链接供用户单击,而不是创建任何HttpWebRequest
对象,我不知道如何验证用户单击链接产生的此类请求。
我如何实现这一目标的任何指示。提前感谢!
您可能希望像您已经在做的那样在服务器端执行请求,然后显示嵌入在您自己的页面中的结果,或者只是将结果直接流式传输回用户。
有点不清楚你需要什么(链接是什么,你向用户展示什么等),所以这是我根据你提供的信息能做的最好的建议。
更新:我会创建一个 HttpHandler(ASP.NET 项目中的 .ashx 文件),并链接到它,带有参数,以便您可以向 REST 服务发出请求并获取正确的文件,然后将数据直接流式传输回访问者。下面是一个简单的示例:
public class DocumentHandler : IHttpHandler {
public Boolean IsReusable {
get { return true; }
}
public void ProcessRequest(HttpContext context) {
// TODO: Get URL of the document somehow for the REST request
// context.Request
// TODO: Make request to REST service
// Some pseudo-code for you:
context.Response.ContentType = "application/pdf";
Byte[] buffer = new WebClient().DownloadData(url);
context.Response.OutputStream.Write(buffer, 0, buffer.Length);
context.Response.End();
}
}
我希望你能自己填空。