2012-12-13 3 views
0

가 어떻게 내부에서 예를

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

이 하나의 같은 API 또는 웹 serviece을 제공하지 않는 페이지에 요청을 보내려면 어떻게합니까 API 또는 웹 서비스 호출없이 asp.net 서비스를 통합 내 asp.net 웹 응용 프로그램.

문제는 내 요청에 정보를 어떻게 전달할 것인가입니다. 예를 들어 위의 경우 주소를 전달해야합니다.

+0

이 URL의 캐싱 응답입니다. – RVD

답변

2

각 브라우저에는 HTTP 요청을 모니터링하기위한 일련의 개발자 도구가 있습니다. 크롬에서는 Ctrl + Shift j를 누르고 네트워크로 이동하여 해당 페이지의 제출 버튼을 눌렀을 때 사용 된 HTTP 요청을 검사 할 수 있습니다. 대부분의 경우 서버에 데이터를 보내는 것은 해당 사이트에서 수행하는 HTTP POST를 사용합니다. 중요한 것은 POST 데이터를 보내는 데 사용하는 변수를 보는 것입니다. 그 사이트는 해당 정보로 자신의 HTTP 요청을 전송하여이 문제를 모방하려고 할 수 application/x-www-form-urlencoded

의 콘텐츠 유형으로 다음

ctl00$CPH4contentWindow$txtAddress:111 Street Name 

를 보냅니다.

클라이언트

$.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; 
    } 
} 

당신이 그것을 필요로하지 않는 경우가 아약스 비동기 전송 될 방금 컨트롤러에 대한 논리를 넣을 수 있습니다 귀하의 ASP.NET 코드 뒤에.

+0

이것은 JQuery를 사용합니다. 그런데 요청을하는 페이지가 동일한 도메인 (동일한 원산지 정책)에있는 경우에만 작동합니다 (http://en.wikipedia.org/wiki/Same_origin_policy). 그래서이 경우 그들은 모두 http://arcgis.dmgov.org에 있어야합니다. –

+0

아 맞습니다. 그런 다음 그는 자신의 웹 API 컨트롤러에서 요청을 전달하여 결과를 반환 할 수 있습니다. 나는 대답을 고칠 것이다, 고마워. – Despertar

0

을 발행 HTTP GET 요청 : 클라이언트 측에서 원하는 경우 http://support.microsoft.com/kb/307023

또는 IFRAME HTML 태그를 사용합니다.

+0

나는 내 자신을 분명히하지 않았다. 요청시 정보를 어떻게 전달합니까? 위에 포함되어있는 링크 주소와 같습니다. –

1

파이어 폭스의 방화범과 같은 웹 브라우저 애드온을 사용하면 페이지에서 어떤 요청을하는지 확인할 수 있습니다. 샘플 케이스의 경우는 prefixText와

http://arcgis.dmgov.org/extmapcenter/AutoComplete.asmx/GetLocAddressList 에에 "textInsindeTextbox"

메이크업 응용 프로그램에서이 요청을 요청하고 있습니다. 하지만 그 웹 서비스는 당신이 그렇게하지 못하게 할 수 있습니다.