ちょっと解決まで時間がかかったので書いておきます。
Expressは最近触り始めたのであまり知識がありません。
Androidアプリから、node.js + expressのサーバーに通信して、結果を取得するAPIを作成していました。
が、AndroidアプリでURLに接続すると
File Not Found Exception
で接続できない。
ブラウザでは普通に接続できるんですけど。
Javaではあるある~ ですよね。
サーバーからは404が帰ってきます。
で、最初はexpressの方かな?と思いまして、下記のようにわざわざ
res.status(200)
をつけてみました。
router.get('/route_out', function(req, res, next) { console.log("route_out"); res.status(200).send('broadcasted'); });
ですが、
File Not Found Exception
は依然としてそのまま…。
node.jsを走らせていると、コンソールに次のような表示が…。
POST /broadcast/route_out 404 35.966 ms - 947
あれっ アプリからはGETではなくて、POSTで接続してるじゃん!
とアプリのコードをよく読むと
@Override protected String doInBackground(String... params) { String string = null; HttpURLConnection urlConnection = null;
try {
URL url = new URL(params[0]); urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setDoOutput(true); urlConnection.setChunkedStreamingMode(0); InputStream in; int status = urlConnection.getResponseCode(); if (status != HttpURLConnection.HTTP_OK){ in = urlConnection.getErrorStream(); Log.e(TAG, "サーバーからのレスポンスエラー " + status); }else{ in = new BufferedInputStream(urlConnection.getInputStream()); string =convertInputStreamToString(in); Log.d(TAG, string); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { urlConnection.disconnect(); } return string; }
となっていて、
urlConnection.setDoOutput(true); urlConnection.setChunkedStreamingMode(0);
この二つがいらなかったですね(;^ω^)
この二つを消して、下記を加えたら解決しました!
urlConnection.setRequestMethod("GET");