0

例如,如何向不提供 API 或 Web 服务的页面发送请求

http://arcgis.dmgov.org/extmapcenter/addresslookup.aspx

从我的 asp.net web 应用程序内部。

问题是,我将如何传递我的请求中的信息。例如,在上面的情况下,我需要传递地址。

4

3 回答 3

2

每个浏览器都有一套用于监控 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 代码后面。

于 2012-12-13T04:56:26.800 回答
1

您可以使用 web 浏览器插件(如 firebug for firefox)来查看该页面发出的请求。对于您的示例案例,它正在请求

http://arcgis.dmgov.org/extmapcenter/AutoComplete.asmx/GetLocAddressList 前缀文本为“textInsindeTextbox”

从您的应用程序中提出此请求。但是该网络服务可能不允许您这样做。

于 2012-12-13T04:55:38.863 回答
0

发出 HTTP GET 请求:http: //support.microsoft.com/kb/307023

或者如果你想在客户端使用 IFRAME HTML 标记。

于 2012-12-13T03:49:07.840 回答