2014-02-18 89 views
1

我想從一個網站刮一下編譯有關阿根廷機場的信息。該網站是http://www.anac.gov.ar/anac/web/index.php/2/310/informacion-aeronautica/notam。 IM試圖使捲曲取的是,在頁面accesed用Ajax查詢的數據ajax查詢與捲曲

<script type="text/javascript"> 
    var lugares = document.getElementById("locations"); 
    $(lugares).change(
      function() { 
       $('.loading').show(); 
       $('.ajaxbody').hide(); 
       $.ajax(
         { 
          url: "/notam/pib", 
          type: "POST", 
          dataType: "html", 
          data: {indicador: $(lugares).val()} 
         }).done(function(html) { 
        tabla = document.getElementById('pib'); 
        $(tabla).find('table').remove(); 
        $(tabla).append(html); 
        $('.loading').hide(); 
        $('.ajaxbody').fadeIn('slow'); 
       }); 
      }); 
</script> 

這是我如何使用捲髮-X POST -H「數據類型:HTML」 -d「/ NOTAM/P ib'-H 「indicador = TRE」 http://www.anac.gov.ar/anac/web/index.php/2/310/informacio 正AERONAUTICA/NOTAM

但捲曲要解決-H 「indicador = TRE」,因爲它是一個網址,但它是數據在POST發送正。

IM看到通過使用Wireshark對頁面進行真正的POST,這就是它看到

POST /notam/pib HTTP/1.1 

Host: 186.153.175.229 

User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:27.0) Gecko/20100101 Firefox/27.0 

Accept: text/html, */*; q=0.01 

Accept-Language: en-US,en;q=0.5 

Accept-Encoding: gzip, deflate 

Content-Type: application/x-www-form-urlencoded; charset=UTF-8 

X-Requested-With: XMLHttpRequest 

Referer: http://186.153.175.229/portal/notam 

Content-Length: 13 

Cookie: PHPSESSID=k1daatvv9882drooofid7cvvc6 

Connection: keep-alive 

Pragma: no-cache 

Cache-Control: no-cache 



indicador=TREHTTP/1.1 200 OK 

Date: Tue, 18 Feb 2014 23:30:41 GMT 

Server: Apache/2.2.22 (Ubuntu) 

X-Powered-By: Fat-Free Framework 

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 

Expires: Thu, 19 Nov 1981 08:52:00 GMT 

Pragma: no-cache 

Access-Control-Allow-Origin: http://geo.anac.gov.ar 

Vary: Accept-Encoding 

Content-Encoding: gzip 

Content-Length: 1512 

Keep-Alive: timeout=5, max=100 

Connection: Keep-Alive 

Content-Type: text/html; charset=UTF-8 



...........Y.r.H...O.gm.j."..1DsE.Dj.<P....PF........>..=......QI61...G........f.W.......7..s.x..I.......Q/w. 
....P...Zx.^..\.......9.zq....^.N.p.E.!........3.y.On..[.hL.....Q<...7...%.,|h......S....#.D...w.K.._.!...l.. 
..Q?...]#....g....x}..a.ir.. 
.E.Hx.eo;.._...4..j..Iqj|.o...[F...|.....:B......Oe`....!0"...,..M..M.O....k.h2,..t...VLPZ-.V...E....C..!.*.v..E..].....s.....-...&.......j2;...G....q.68...2F..G....m..S.[dp$. 
..e..Di.. ....AxK.)...S...y.=..7....>[email protected][email protected][8.f..=<4...t.pR(>n.1.............."..4.W.I.2...1UY.U..M.L.....G... et....].5.E 
.q...;q.6..?.{... [email protected]*......X.. ...A..6.%0....Z...2.W..J....Mi...n-E......A.G.PM.........*m.4N.......N....p*..............R.v#.. 
P....)<.c...\..".e...(.3...P.3..%vK....6N..8......9....DD,U %..d...=2.Z.......f..0...........R......\...h....H/F6....M3..m..&6.. 
..n.qc1...).3..\.+.r.4b.6j.3h...R&[email protected],C..i.-.....+..Hu...D...."...y.v.6.8.X..R.J.A.B...h.{...H.......y.P..*.t.$z.!....t>....Sa?.....5.t.t..&.r.K5Zx:aI$/#.....N......4.D.k.....3...?x!8..&....|...v....hY 
X..{Q.m...d.X.......R...OO"G..U........!.......3?. 
...o......QT.NI..%.k. .^...[.*.'....,>.8..s.O....<.vd...O&..>.n.f..E..Q..]..9.&w.....5..`4.e..0......Q8d.O..p.I..8.j.r..?...$ 
a....^.5...&.|.....4......&..z.&I&2.c]L..(.........~....8..a.xc.....7t...O.z.............m....\.~{............}I..i?.M.H.a....[/m]..:.P....B.y........;...m5..|..ZEau.....hBC}0..D..a....... .....Y.....^...6. 
...../m...V=Ob.D./c..)..G...hH..h...1.$][email protected]{......8...?..... .. 

感謝。

回答

0

我已經使用這個

curl -X POST -H "X-Requested-With: XMLHttpRequest" -d "indicador=TRE"http://186.153.175.229/notam/pib 

我的問題解決了我的問題是,我是發送AJAX查詢作爲-d的URL部分,真正是從主機的IP相對路徑。也發現這個http://www.laktek.com/2012/03/12/curl-tips-for-daily-use/它幫了很多。

我無法在windows下編譯curl,所以我使用了我從curl中學到的使用Qt C++編寫http POST的代碼如下。

QNetworkAccessManager *nwam = new QNetworkAccessManager; 
    QNetworkRequest request(QUrl("http://186.153.175.229/notam/pib"));  
    QUrl URL; 
    QByteArray postData; 
    URL="http://186.153.175.229/portal/notam"; 
    request.setRawHeader("X-Requested-With"," XMLHttpRequest"); 
    QString postKey = "indicador=TRE"; 
    postData.append(postKey); 
    QNetworkReply *reply = nwam->post(request,postData); 
0

你的捲曲命令令人困惑。特別是URL。所以我在我的命令中使用了一個虛擬網址。

curl -X POST -H "dataType: html" -d "/notam/p ib" -H "indicador: TRUE" http://url/ 

我已經取代了你的單引號與雙引號,也-H之前調整的空間。

+0

我意識到,網址,其中的數據確實是爲http://186.153.175.229/portal/notam,使用參數-H的事「indicador:TRE」是TRE從特雷利烏機場的指示燈在阿根廷,並在POST發送。隨着你的改進,現在我得到了一個錯誤405。我還注意到,在POST中,我在wireshark中看到,當我使用頁面生成POST時,它說POST/notam/pib HTTP/1.1和我用curl生成的POST它說POST/portal/notam HTTP/1.1 i認爲它必須與我發佈的ajax方法相關,但不知道如何使curl複製它。謝謝! – Walmac