验证对外部 REST 服务的请求
Authenticating requests to external REST service
我是网络开发的新手,对网络的主要概念不太了解。但是,我的任务是编写一个 asp.net 应用程序,用户可以在其中通过查询外部 RESTful Web 服务来搜索文档。对此 REST 服务的请求必须通过 HTTP 基本身份验证进行身份验证。
到目前为止一切顺利,我已经能够使用 HttpWebRequest
和 HttpWebResponse
查询服务,将编码的 user:pass 添加到请求的授权 header,反序列化 Json 响应并生成包含 url 的字符串列表到搜索结果的 pdf 文档。
所以现在我使用这些 url 以编程方式将 HyperLink
元素添加到页面:
foreach (string url in urls) {
HyperLink link = new HyperLink();
link.Text = url;
link.NavigateUrl = url;
Page.Controls.Add(link);
}
问题是对这些文档的请求必须使用与查询 REST 服务时相同的基本 http 身份验证和相同的 user:pass 进行授权,因为我只是在创建 link s 供用户单击,而不创建任何 HttpWebRequest
objects,我不知道如何验证用户单击 link.
产生的此类请求
非常感谢任何关于如何完成此操作的指示。提前致谢!
您可能想在服务器端执行请求,正如我认为您已经在做的那样,然后将结果显示在您自己的页面中,或者直接将结果流式传输回用户。
有点不清楚你需要什么(link 是什么,你向用户展示了什么,等等),所以这是我根据你提供的信息所能做的最好的建议给。
更新:
我会创建一个 HttpHandler(ASP.NET 项目中的一个 .ashx 文件),并向其 link 添加参数,以便您可以向 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();
}
}
希望大家自己填空
我是网络开发的新手,对网络的主要概念不太了解。但是,我的任务是编写一个 asp.net 应用程序,用户可以在其中通过查询外部 RESTful Web 服务来搜索文档。对此 REST 服务的请求必须通过 HTTP 基本身份验证进行身份验证。
到目前为止一切顺利,我已经能够使用 HttpWebRequest
和 HttpWebResponse
查询服务,将编码的 user:pass 添加到请求的授权 header,反序列化 Json 响应并生成包含 url 的字符串列表到搜索结果的 pdf 文档。
所以现在我使用这些 url 以编程方式将 HyperLink
元素添加到页面:
foreach (string url in urls) {
HyperLink link = new HyperLink();
link.Text = url;
link.NavigateUrl = url;
Page.Controls.Add(link);
}
问题是对这些文档的请求必须使用与查询 REST 服务时相同的基本 http 身份验证和相同的 user:pass 进行授权,因为我只是在创建 link s 供用户单击,而不创建任何 HttpWebRequest
objects,我不知道如何验证用户单击 link.
非常感谢任何关于如何完成此操作的指示。提前致谢!
您可能想在服务器端执行请求,正如我认为您已经在做的那样,然后将结果显示在您自己的页面中,或者直接将结果流式传输回用户。
有点不清楚你需要什么(link 是什么,你向用户展示了什么,等等),所以这是我根据你提供的信息所能做的最好的建议给。
更新: 我会创建一个 HttpHandler(ASP.NET 项目中的一个 .ashx 文件),并向其 link 添加参数,以便您可以向 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();
}
}
希望大家自己填空