2011-04-08 5 views
1

사이트의 데이터를 표시하는 Android 앱을 개발하려고합니다. 그래서 여기AJAX 요청을 복제하고 XML을 얻기 위해 사이트 해독

는 거래이다, 나는이 사이트를 가지고 : http://gps.skgt-bg.com/Web/SelectByLine.aspx (그것은 불가리아어의)
그것은 타고 GPS를 기반으로, 내 도시에서 버스의 도착 예정 시간을 얻기 위해 ASP.NET 및 Ajax를 사용 버스들.

기본적으로 전송 유형 (첫 번째 드롭 다운 목록), 회선 번호 (두 번째), 버스의 제목 (라디오 버튼) 및 정지 지점 (3 번째 드롭 다운 목록). 버스가 정류장에있을 것으로 예상되는 시간과 분, 결과 계산 시간 및 버스 정류장의지도를 반환합니다. 나는 예상되는 시간과 분에만 관심이있다.

나는 서버에 보내는 요청을 이해하고 싶다. 그래서 내 애플 리케이션에서 그것을 복제 할 수 있고, XML을 다시 얻고, 내 애플 리케이션에서 시간을 보여줄 수있다.

우선 ASP.NET에 익숙하지 않아 보안 조치가 있는지 알 수 없으므로 이런 경우에 대비해야합니다. 그렇다면 사용하지 않는 것이 유감입니다. 하지만 지금까지의 나의 연구는 그렇게하지 않았다.

Firebug를 사용하면 WebResource.axd에 내가 관심있는 서버의 어셈블리를 식별하는 매개 변수와 변경 사항이 있는지 확인하는 타임 스탬프가 전송된다는 것을 알 수 있습니다.

내 질문에이 doable입니다, 매개 변수가 내 애플 리케이션은 지속적인 업데이 트가 필요합니다 너무 많이 변경됩니까? 또한 어떻게 XML을 요청할 수 있습니까?

나는 사이트

xmlRequest.open("POST", theForm.action, true); 
xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
xmlRequest.send(postData); 

에서 XML을 요청, 다음과 같은 자바 스크립트 코드를 참조하지만 난 정말 내가 방법을 봤더라도, 그것을 알아낼 수 없습니다. "application/x-www-form-urlencoded"는 URL이 인코딩되어 요청을 재현 할 수 없다는 것을 의미합니까?

내가 알아낼 수있는 몇 가지 문헌을 가르쳐 줄 수 있다면 매우 감사 할 것입니다.

안부,

앤드류

답변

1

참고 : 나는 당신이 안드로이드 응용 프로그램에서 분석 될 부분을 놓쳤다. 안드로이드를 태그로 추가하는 편집 요청을했습니다.

해당 사이트를 볼 때 확실히 재현 할 수 있어야합니다. 여기이 시나리오에서 내가하는 일이 있습니다. 이 작업을 수행하는 더 쉬운 방법이 있습니다. 그러나이 작업을 알 수 있습니다.

먼저 Firebug에서 요청을보고 전달 된 모든 변수와 요청이 GET인지 POST인지 확인합니다. 그런 다음 HttpWebRequest를 사용하여 동일한 메소드에서 동일한 변수를 전달하는이 페이지를 방문하십시오. 출력에 필요한 데이터가 포함되어 있으면 모든 설정이 완료되며 텍스트를 파싱하는 것이 중요합니다. 해당 사이트를 보면 WebResource.axd가 호출하려는 페이지가 아닙니다. 그냥 자바 스크립트가 포함되어 있습니다. 사이트는 POST를 사용하여 전체 페이지를 재생성합니다.

그래도 작동하지 않으면 위 단계를 수행하기 전에 몇 가지 단계를 추가해야합니다. HttpWebRequest를 사용하여 실제 사용자가 사이트에 액세스하는 방법을 본질적으로 재현하십시오. 이 경우 처음으로 http://gps.skgt-bg.com/Web/SelectByLine.aspx을 요청하게됩니다.이와 함께 CookieContainer 객체를 사용하여 설정된 쿠키를 캡처하여 후속 요청이 관련 쿠키 데이터를 보내야합니다. 이것은 AJAX 요청이 쿠키 데이터를 찾는 경우에 도움이 될 것입니다. 다음으로 AJAX 매개 변수를 살펴보고 자동 .NET 매개 변수가 __VIEWSTATE처럼 전달되는지 확인하십시오. 그렇다면 첫 번째 호출을 구문 분석하여 이러한 값을 찾고 다음 요청시이를 사용해야합니다.

+0

감사합니다 :

위키 백과에 대한 좀 더 많은 정보가 있습니다! 나는 그 때 그것을 지킬 것이다. – Andrew

1

application/x-www-form-urlencoded 콘텐츠 유형에 관한 특정 질문에 답변하고 싶습니다. 이 유형은 foo=&1bar=2&etc=morestuff 양식의 간단한 키 - 값 형식입니다. 키와 값은 등호로 분리되고 쌍은 앰퍼샌드로 구분됩니다. URL의 쿼리 문자열에서 자주 보는 것과 같은 형식입니다. 이것은 POST 요청에서 데이터를 제출하기위한 가장 일반적인 형식입니다.

인코딩 된 URL은 특정 특수 문자가 이스케이프된다는 것을 의미합니다. 값에 등호 또는 앰퍼샌드가 포함되어 있으면 해당 문자가 이스케이프되지 않은 경우 형식이 엉망이됩니다. 값이 "사과 & 오렌지"인 키 "foo"가있는 경우 앰퍼샌드는 %26으로 바뀌고 공백은 %20 또는 +으로 바뀝니다. 그래서 직렬화 application/x-www-form-urlencoded 데이터 foo=apples%20%26%20oranges

당신은 키 또는 값 및 인코딩 된 문자열을 디코딩 할 수있는 decodeURIComponent 기능을 인코딩하기 위해 encodeURIComponent 함수를 사용하여 자바 스크립트 콘솔을 사용하여 인코딩 함께 놀러 수있을 것이다. http://en.wikipedia.org/wiki/X-www-form-urlencoded

관련 문제