Java
Android
node.js
Express
ちょっと解決まで時間がかかったので書いておきます。
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");