たとえば、このようなAPIまたはWebサービスを提供していないページにリクエストを送信するにはどうすればよいですか?
http://arcgis.dmgov.org/extmapcenter/addresslookup.aspx
私のasp.netWebアプリケーション内から。
問題は、リクエストで情報をどのように渡すかです。たとえば上記の場合、アドレスを渡す必要があります。
たとえば、このようなAPIまたはWebサービスを提供していないページにリクエストを送信するにはどうすればよいですか?
http://arcgis.dmgov.org/extmapcenter/addresslookup.aspx
私のasp.netWebアプリケーション内から。
問題は、リクエストで情報をどのように渡すかです。たとえば上記の場合、アドレスを渡す必要があります。
各ブラウザには、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 コード ビハインドに入れるだけです。
firefox の firebug などの Web ブラウザー アドオンを使用して、そのページが行っている要求を確認できます。あなたのサンプルケースでは、
http://arcgis.dmgov.org/extmapcenter/AutoComplete.asmx/GetLocAddressList の prefixText を「textInsindeTextbox」に
アプリケーションからこのリクエストを行います。しかし、その Web サービスでは、それができない場合があります。
HTTP GET 要求を発行します: http://support.microsoft.com/kb/307023
または、クライアント側で必要な場合は IFRAME HTML タグを使用します。