我对网络开发并不陌生,而且我对网络的主要概念并没有很好的把握。但是,我的任务是编写一个asp.net应用程序,用户可以通过查询外部RESTful Web服务来搜索文档。必须通过HTTP基本身份验证对此REST服务的请求进行身份验证。
到目前为止,我已经能够使用HttpWebRequest
和HttpWebResponse
查询服务,添加编码用户:传递给请求的授权标头,反序列化Json响应并生成一个带有URL的字符串列表到搜索产生的pdf文档。
所以现在我以编程方式将HyperLink
个元素添加到页面中并使用这些网址:
foreach (string url in urls) {
HyperLink link = new HyperLink();
link.Text = url;
link.NavigateUrl = url;
Page.Controls.Add(link);
}
问题是对这些文档的请求必须使用相同的基本http身份验证和相同的用户进行授权:在查询REST服务时传递,并且因为我只是创建用户单击的链接,并且没有创建任何HttpWebRequest
个对象,我不知道如何通过用户点击链接来验证此类请求。
非常感谢任何关于如何实现这一目标的指示。提前谢谢!
答案 0 :(得分:0)
你可能想要在服务器端执行请求,因为我认为你已经在做了,然后显示嵌入在你自己的页面中的结果,或者直接将结果流回给用户。
有点不清楚你需要什么(链接是什么,你向用户展示什么等等),所以这是我能根据你提供的信息做的最佳建议。
<强>更新强>: 我将创建一个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();
}
}
我希望你能自己填补这些空白。