0

たとえば、このようなAPIまたはWebサービスを提供していないページにリクエストを送信するにはどうすればよいですか?

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

私のasp.netWebアプリケーション内から。

問題は、リクエストで情報をどのように渡すかです。たとえば上記の場合、アドレスを渡す必要があります。

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

firefox の firebug などの Web ブラウザー アドオンを使用して、そのページが行っている要求を確認できます。あなたのサンプルケースでは、

http://arcgis.dmgov.org/extmapcenter/AutoComplete.asmx/GetLocAddressList の prefixText を「textInsindeTextbox」に

アプリケーションからこのリクエストを行います。しかし、その Web サービスでは、それができない場合があります。

于 2012-12-13T04:55:38.863 に答える
0

HTTP GET 要求を発行します: http://support.microsoft.com/kb/307023

または、クライアント側で必要な場合は IFRAME HTML タグを使用します。

于 2012-12-13T03:49:07.840 に答える