2016-06-20 8 views
1

WeatherHawk 916 Wireless Weather Stationを使用し、キャンパスの天気データを利用できるように、私の大学の研究プロジェクトに接続しています。ネットワーク。MeteorのHTTP 'GET'リクエストでXMLファイルが取得されない

データにアクセスするには、WebブラウザにIPアドレスを入力する必要があります。データは、次のように表示されます。Weather Station Website。 IPモジュールのサーバーは、データをXMLとして提供しています(MeteorのHTTP 'GET'を使用してそれを取得して解析できるように、興味を持っています)。 "Public Table XMLを取得"をクリックすると、このページが表示されます:XML Data

メインページで'10.181.160.100 'というMeteor' GET 'HTTPリクエストを実行すると、問題なくHTMLページ全体が戻ってきます。しかし、私は'10 .181.160.100/get_public_tbl.cgi A = 1' 、私は次のエラーを取得するからXMLを取得しようとします?私は私の教員顧問の問題を議論してた

I20160620-17:41:11.662(-4)? Exception while invoking method 'xmlDemo' Error: Parse Error 
I20160620-17:41:11.833(-4)?  at Object.Future.wait (/Users/melkisespinal/.meteor/packages/meteor- tool/.1.3.3_1.ajs0iq++os.osx.x86_64+web.browser+web.cordova/mt- os.osx.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:449:15) 
I20160620-17:41:11.834(-4)?  at Object.call (packages/meteor/helpers.js:119:1) 
I20160620-17:41:11.834(-4)?  at [object Object].xmlDemo (imports/api/main.js:6:21) 
I20160620-17:41:11.834(-4)?  at maybeAuditArgumentChecks (packages/ddp-server/livedata_server.js:1704:12) 
I20160620-17:41:11.834(-4)?  at packages/ddp-server/livedata_server.js:711:19 
I20160620-17:41:11.835(-4)?  at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1) 
I20160620-17:41:11.835(-4)?  at packages/ddp-server/livedata_server.js:709:40 
I20160620-17:41:11.835(-4)?  at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1) 
I20160620-17:41:11.835(-4)?  at packages/ddp-server/livedata_server.js:707:46 
I20160620-17:41:11.836(-4)?  at tryCallTwo (/Users/melkisespinal/.meteor/packages/promise/.0.7.2.71gs7j++os+web.browser+web.cordova/npm/node_modules/promise/lib/core.js:45:5) 
I20160620-17:41:11.836(-4)?  - - - - - 
I20160620-17:41:11.836(-4)?  at Socket.socketOnData (http.js:1639:20) 
I20160620-17:41:11.837(-4)?  at TCP.onread (net.js:528:27) 

彼が持っていましたHTTPリクエストを使用するJavaでの同じ問題。彼はFirefoxの「Web Developer」ツールを使用して、Network incomingファイルとoutgoingファイルを見た。メインのウェブサイトはステータスコード200を返しましたが、それは良いですが、XMLを持つものは明らかにヘッダーファイルを持っていませんでした(ステータスコードなし)。おそらくこれが問題だと言いました。代わりに、彼はSocketを使ってみました。そして、SocketのInputStreamを使ってPrintWriterで 'GET'リクエストを使用しました。彼はXMLを取り戻した。今、ソケットプログラミングがMeteor(サーバー側)/ JavaScriptで利用できるかどうかわかりません。ここで

今の同期である私は、HTTP呼び出しのために持っている(と失敗)コード、である:私はだけではなく、現在のリンクの10.181.160.100/を行う場合

'xmlDemo':function(){ 
    var result = HTTP.call('GET', 'http://10.181.160.100/get_public_tbl.cgi?A=1', 
     {}); 
    if(result.statusCode == 200){ 
     return result.content; 
    } 
    else{ 
     console.log("Response issue: ", result.statusCode); 
     throw new Meteor.Error(result.statusCode, result.error); 
    } 
} 

、それはデータを戻りますコンソールに出力します(XMLファイルのリンクを使用して印刷しようとすると、データは未定義です)。

私はソケット・プログラミングを使ってこの問題に対処する方法があれば誰でも私が追加できるメテオ・パッケージを知っていて、この問題に対処するのに役立つかもしれないと思います。前もって感謝します。

アップデート1

要求されるようにここではクロームネットワーク機能から得cURLの情報があります。また、

curl http://10.181.160.100/get_public_tbl.cgi?A=1' 
-H 'Accept-Encoding: gzip, deflate, sdch' 
-H 'Accept-Language: en-US,en;q=0.8,es;q=0.6' 
-H 'Upgrade-Insecure-Requests: 1' 
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36' 
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' 
-H 'Cache-Control: max-age=0' 
-H 'Connection: keep-alive' 
--compressed 

は、私がしようとするとキャッチでコードを囲み、私は次のエラーを得た:

TypeError: Cannot read property 'statusCode' of undefined 
I20160622-20:57:38.918(-4)?  at [object Object].xmlDemo (imports/api/main.js:27:6) 
I20160622-20:57:38.918(-4)?  at maybeAuditArgumentChecks (packages/ddp-server/livedata_server.js:1704:12) 
I20160622-20:57:38.918(-4)?  at packages/ddp-server/livedata_server.js:711:19 
I20160622-20:57:38.919(-4)?  at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1) 
I20160622-20:57:38.919(-4)?  at packages/ddp-server/livedata_server.js:709:40 
I20160622-20:57:38.919(-4)?  at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1) 
I20160622-20:57:38.919(-4)?  at packages/ddp-server/livedata_server.js:707:46 
I20160622-20:57:38.920(-4)?  at tryCallTwo (/Users/melkisespinal/.meteor/packages/promise/.0.7.2.71gs7j++os+web.browser+web.cordova/npm/node_modules/promise/lib/core.js:45:5) 
I20160622-20:57:38.920(-4)?  at doResolve (/Users/melkisespinal/.meteor/packages/promise/.0.7.2.71gs7j++os+web.browser+web.cordova/npm/node_modules/promise/lib/core.js:200:13) 
I20160622-20:57:38.920(-4)?  at new Promise (/Users/melkisespinal/.meteor/packages/promise/.0.7.2.71gs7j++os+web.browser+web.cordova/npm/node_modules/promise/lib/core.js:66:3) 

答えて

0

回答が変更されました。以前の(間違った)試行の履歴を参照してください。

は...これを行うには、あなたのコードを変更する高速応答のための

var result = HTTP.call(
     'GET', 
     'http://10.181.160.100/get_public_tbl.cgi', 
     {'query': '?A=1'}, 
     function(error, result) { 
    if(error) { 
     // Failed hideously 
    } else { 
     // Got a response 
     if(result.statusCode == 200){ 
      // Was OK 
      return result.content; 
     } else { 
      // Was something other than a 200 OK 
      console.log("Response issue: ", result.statusCode); 
      throw new Meteor.Error(result.statusCode, result.error); 
     } 
    } 
}); 
+0

感謝を試してみてください。私は私が得た応答で投稿を更新しました。私はそれが助けて欲しいまた、私は "応答ヘッダーをコピー"して、私はこれを戻しました: 'HTTP/0.9 200 OK'とあなたはHTTP/1.1について言及しました。私はこのことが重要かどうかはわかりませんが、とにかくそれがあります。 –

+0

tryとcatchブロックでHTTPリクエストを囲んだとき、元の投稿に新しいエラーが報告されました。 –

+0

@melkis_espinal申し訳ありませんが、私は最近仕事で埋葬されており、再訪できませんでした。私は流星を使っていませんが、[手動では(https://themeteorchef.com/snippets/using-the-http-package/#tmc-get-requests)あなたが間違っていると呼んでいます...要求が完了すると(匿名 '関数(エラー、応答)'とその本体が両方ともHTTPへのメソッド呼び出しの一部であり、直後には実行されない)ためのコールバックメカニズムを使用することに注意してください。呼び出しがブロックされていても非同期であるように見える場合は、あなたのアプローチが有効です。 – Basic

関連する問題