如何将请求发送到不提供 API 或 Web 服务的页面
http://arcgis.dmgov.org/extmapcenter/addresslookup.aspx
从我的 asp.net 网络应用程序内部。
问题是,我将如何传递请求中的信息。 例如,在上述情况下,我需要传递地址。
每个浏览器都有一组用于监控HTTP请求的开发人员工具。在Chrome中,您可以按ctrl + shift j,转到网络,然后检查点击该页面上的提交按钮时使用的HTTP请求。大多数情况下,将数据发送到服务器将使用该站点所做的HTTP POST。重要的是查看它们用于发送 POST 数据的变量。该网站发送以下内容
ctl00$CPH4contentWindow$txtAddress:111 Street Name
内容类型为 application/x-www-form-urlencoded
您可以尝试通过发送包含该信息的您自己的 HTTP 请求来模拟这一点。
客户
$.ajax({
url: '/api/Address/111%20Street%20Name',
dataType: 'html',
success: function (result) {
// do something with result
}
});
控制器
public class AddressController : ApiController
{
public string Get(string address)
{
WebClient client = new WebClient();
client.AddHeader("content-type", "application/www-form-urlencoded");
string response = client.UploadString("http://arcgis.dmgov.org/extmapcenter/addresslookup.aspx", "ctl00$CPH4contentWindow$txtAddress=" + Uri.EscapeDataString(address));
return response;
}
}
如果您不需要使用 ajax 异步发送它,您只需将控制器的逻辑放入 ASP.NET 代码中即可。
您可以使用 Web 浏览器插件(如 Firefox 的 Firebug )来查看该页面正在发出哪些请求。对于您的示例案例,它正在请求
http://arcgis.dmgov.org/extmapcenter/AutoComplete.asmx/GetLocAddressList跟前缀文本到"textInsindeTextbox"
从您的应用程序发出此请求。但是该网络服务可能不允许您这样做。
发出 HTTP GET 请求:http://support.microsoft.com/kb/307023
或者,如果您希望在客户端使用 IFRAME HTML 标记。