无需 api 或 web 服务调用即可集成 asp.net 服务

Posted

技术标签:

【中文标题】无需 api 或 web 服务调用即可集成 asp.net 服务【英文标题】:integrate asp.net services without api or web service call 【发布时间】:2012-11-30 21:43:36 【问题描述】:

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

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

来自我的 asp.net web 应用程序。

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

【问题讨论】:

你缓存来自这个 URL 的响应。 【参考方案1】:

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

【讨论】:

这使用 JQuery。顺便说一句,它只有在发出请求的页面位于同一个域 - 同源策略 - en.wikipedia.org/wiki/Same_origin_policy 上时才会起作用。所以在这种情况下,他们都应该在arcgis.dmgov.org 哦,对了。那么他可以只转发来自他自己的 Web Api 控制器的请求并返回结果。我会更新答案,谢谢。【参考方案2】:

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

http://arcgis.dmgov.org/extmapcenter/AutoComplete.asmx/GetLocAddressList 和 prefixText 到“textInsindeTextbox”

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

【讨论】:

【参考方案3】:

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

如果你想在客户端使用 IFRAME HTML 标签。

【讨论】:

恐怕我没有说清楚。如何在我的请求中传递信息。就像我上面包含的链接的地址。

以上是关于无需 api 或 web 服务调用即可集成 asp.net 服务的主要内容,如果未能解决你的问题,请参考以下文章

无需等待结果即可从Web API调用另一个Web API

[WEB API ]ASP.NET CORE WEB API 调用WebService数据

ASP.NET 页面方法与 Web 服务

ASP.NET MVC Web API 身份验证令牌安全问题

用web api 分离前后台 会不会有风险

在从 Angular 6 调用 ASP.NET Core Web API 的服务器异常上获取 CORS 错误 *only*